簡體   English   中英

sql查詢中的php變量

[英]php variable in sql query

我有這個:

$result = mysql_query("SELECT * FROM animals WHERE hand= " .$_SESSION['SESS_HAND']. ");

但總是顯示“解析錯誤:解析錯誤,需要T_STRING' or T_VARIABLE”或“ T_NUM_STRING”

總是轉義字符串變量:

$result = mysql_query("SELECT * FROM animals WHERE hand= '" .
mysql_real_escape_string($_SESSION['SESS_HAND']). "'");

您的查詢不起作用的原因是,您的WHERE值不在單引號之間。

編輯:昆汀也是對的,您沒有在最后一個括號中關閉引號;)。

這將使查詢工作:

$result = mysql_query("SELECT * FROM animals WHERE hand= '" .$_SESSION['SESS_HAND']. "'");

但是就像a1ex07指出的那樣,您應該始終對變量進行轉義! 上面的查詢容易受到MySQL注入的攻擊。 下面的示例通過轉義變量顯示了正確的方法,我認為是可讀性更好的代碼;)。

$query = "SELECT * FROM `animals` 
WHERE `hand` = '" .mysql_real_escape_string($_SESSION['SESS_HAND']). "'";

mysql_query($query);

嘗試:

$result = "SELECT * FROM animals WHERE hand= " . $_SESSION['SESS_HAND'];

mysql_query($result);

另外,通過執行此操作,您可以調試查詢,並通過編寫以下代碼來確切了解SQL在SQL中的操作:

echo $result;

它給出該錯誤消息是因為您從未完成在會話數據之后嘗試添加的字符串: ");

但是不要通過將字符串混在一起來構建SQL查詢。 使用准備好的語句和參數化查詢

問題:

$result = mysql_query("SELECT * FROM animals WHERE hand= " .$_SESSION['SESS_HAND']. ");

解:

if (!$sessHand = mysql_real_escape_string($_SESSION['SESS_HAND']))
{ 
echo "There was a error: " . mysql_error();
}
else
{ $result = mysql_query("SELECT * FROM animals WHERE hand=$sessHand") }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM