mysql_query("SELECT * FROM foo WHERE id ='$foo' OR id = '$foo2");
這是行不通的。PHP mysql選擇QUERY與或
基本上,我希望能夠選擇它,其中id是一個變量的值或另一個的值。
謝謝。
編輯:ID列是數字。
php
mysql_query("SELECT * FROM foo WHERE id ='$foo' OR id = '$foo2");
這是行不通的。PHP mysql選擇QUERY與或
基本上,我希望能夠選擇它,其中id是一個變量的值或另一個的值。
謝謝。
編輯:ID列是數字。
正如其他人所說,你確認,問題是,您正在使用字符串文字來比較數字列。有它的工作,查詢應該像
mysql_query("SELECT * FROM foo WHERE id =$foo OR id = $foo2");
然而,這種解決方案具有非常非常壞的代碼味道!
首先,這是爲什麼IN
存在:要能寫
mysql_query("SELECT * FROM foo WHERE id IN ($foo, $foo2)");
第二,你注入轉義串到你的查詢?如果你是,你的代碼容易受到sql injection的影響!你知道我們是在談論整數值這種特定情況下
$query = sprintf("SELECT * FROM foo WHERE id IN ('%s', '%s')",
mysql_real_escape_string($foo),
mysql_real_escape_string($foo2));
mysql_query($query);
或交替這樣的,因爲:
逃生和報價您的變量是安全的,這樣(一般情況下)$query = sprintf("SELECT * FROM foo WHERE id IN (%s, %s)",
intval($foo), intval($foo2));
mysql_query($query);
腳註:據我所知,使用sprintf
這樣的時候,人們還可以處理整數值,只要使用%d
代替如果%s
的格式說明。然而,我相信只要看一個地方(參數列表)而不是多個地方(我在變量上使用intval
?或者我沒有使用,但我正在使用%d
在格式字符串中,所以我仍然可以嗎?)。這聽起來可能與直覺相反,但在面對修改時它更強大。
我想你忘記了過去的「字符
mysql_query("SELECT * FROM foo WHERE id ='$foo' OR id = '$foo2'");
但因爲id列是數值,你應該使用:
mysql_query("SELECT * FROM foo WHERE id = $foo OR id = $foo2");
試試這個:
mysql_query(sprintf("SELECT * FROM foo WHERE id = %s OR id = %s", $foo, $foo2));
我建議你使用mysql_error()來獲得MySQL錯誤(如果存在)。
mysql_query(..) or die('Erro:'.mysql_error());
mysql_error返回mysql中發生的最後一個錯誤。
是ID列的數字? – ManseUK
在代碼中缺少''''。只是一個錯字? – Kakashi
_「這不起作用。」_是否是從MySql獲得的錯誤?爲什麼給定的查詢不起作用,我認爲它有點冗長,但我可能會誤解。 – CodeCaster