[英]Querying the result of an previous SQL query, using a HTML form and PHP
我一直在絞盡腦汁想弄清楚如何使它起作用。 現在,我將在這里對其進行解釋。
我想要做的是,當用戶鍵入的東西變成一種形式,它返回的查詢結果,然后使用該查詢的結果,開展對他們的另一個查詢。 我正在使用PHP和oracle數據庫。
例如:目前,我有一個包含食譜及其成分的數據庫; 並且我有一個表格,用戶可以在其中輸入成分。 在此示例中,是培根。
那很好。 但是,我很難實現的是用戶輸入其他成分時,當前表的結果在那里並進一步查詢。 假設我輸入“奶酪”,然后查詢並顯示所有包含培根和奶酪的食譜。
通過簡單的SQL可以輕松實現此過程,但是就像我看到的那樣,很難將其轉換為使用表單。
現在,我有了一個解決方案,要么與臨時表,動態sql有關,要么二者兼而有之。
預先感謝您對此事的任何幫助。
我的代碼如下:
<?php
if(isset($_POST['submit']))
{
$name = $_POST['name'];
}
function do_fetch($myeid, $s)
{
print '<table border="1">';
while ($row = oci_fetch_array($s, OCI_RETURN_NULLS+OCI_ASSOC)) {
print '<tr>';
foreach ($row as $item) {
print '<td>'.($item?htmlentities($item):' ').'</td>';
}
print '</tr>';
}
print '</table>';
print '<br>';
}
// Create connection to Oracle
$c = oci_connect("system", "luigi98", "localhost/XE");
// Use bind variable
$query = "SELECT DISTINCT r.recipeTitle AS recipe
FROM RECIPES.recipe r
WHERE recipeID IN(
SELECT r.recipeID
FROM recipes.recipeIng il
INNER JOIN RECIPES.ingredient i ON il.ingredientID = i.ingredientID
WHERE il.recipeID = r.recipeID
AND i.ING = :eidbv)";
$s = oci_parse($c, $query);
$myeid = $name;
oci_bind_by_name($s, ":EIDBV", $myeid);
oci_execute($s);
do_fetch($myeid, $s);
// Close the Oracle connection
oci_close($c);
?>
<p>Enter ingredient</p>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="name"><br>
<input type="submit" name="submit" value="Search"><br>
</form>
有幾種方法可以做到這一點。
最簡單的方法可能是在搜索框中再次顯示您的原始成分,並指示用戶根據需要添加更多成分(以空格,逗號等分隔)。
然后,您可以針對這些字符展開搜索詞,並為每種成分添加條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.