我正在嘗試使用下面的if/else語句來構建查詢,但我在第一步中對NULL求值時出現問題。無效的MySQL資源
經過一些在線搜索後,我似乎無法追查我做錯了什麼......應該使用空引號代替:""
?
雖然這也給了我一個錯誤。
所以我不知道問題是在第一個塊還是第二個,即while
循環。
有什麼建議嗎?
$name = $_POST['Your_name'];
if ($location != "All" && $name == NULL) $query="SELECT * FROM talent WHERE duty_station='$location')";
else if($location == "All" && $name != "All") $query="SELECT * FROM talent WHERE Your_name IN ('$name')";
else if($dutyReq != "All" && $name == "All") $query="SELECT * FROM talent WHERE duty_station='$location'";
else if($location == "All" || $name == "All") $query="SELECT * FROM talent";
然後我的循環,打印出的數據給了我這個錯誤:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/html/talent/searchresults.php on line 64
這是錯誤來自代碼:
$result=mysql_query($query);
mysql_query($result);
echo "<table border='1'>
<tr>
<th>Your name</th>
<th>duty station</th>
<th>first proficiency</th>
</tr>";
while($row = mysql_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['Your_name'] . "</td>";
echo "<td>" . $row['duty_station'] . "</td>";
echo "<td>" . $row['prof_order_processing'] . "</td>";
echo "</tr>";
}
echo "</table>";
看起來你在這裏的SQL語句有錯誤「SELECT * FROM talent WHERE duty_station ='$ location'----->)」 –
**你的代碼容易受到SQL注入的攻擊**你真的*應該使用[準備語句](http://stackoverflow.com/a/60496/623041),將變量作爲參數傳遞到其中,而這些參數不針對SQL進行評估。如果你不知道我在說什麼,或者如何解決它,請閱讀[Bobby Tables]的故事(http://stackoverflow.com/questions/332365/xkcd-sql-injection-please-explain) 。 – eggyal
在PHP中,'null'是小寫字母。 –