所以我试图在我的PHP代码中使用if语句来处理我的SQL查询。基本上,我想说“如果$ var不为0,则添加WHERE子句,但如果$ var为0,则不要添加它”。
下面的代码似乎不起作用。非常感谢帮助!
$var = $_GET["var"];
$query = sprintf("SELECT * FROM table ".if($var != 0) { echo "WHERE var = '%s'," }."
if($var != 0) { mysql_real_escape_string($var) });
$result = mysql_query($query);
的更新 的
我最终决定,因为我将为多个变量使用多个条件,所以最好执行以下操作:
$var = $_GET["var"];
$string ='';
if ($var != 0) {
$string = "WHERE var =". $var . " ";
}
$query = sprintf("SELECT * FROM table ". $string.");
$result = mysql_query($query);
现在我可以使用尽可能多的变量,并在SQL语句中添加其他子句。
感谢您的帮助!!
答案 0 :(得分:4)
在字符串连接中不能有if
表达式。此外,您错过了尾随"
。
$query = sprintf("SELECT * FROM table ". $var != 0 ? "WHERE var = '%s'" : "");
此外,mysql_real_escape_string()
不通过引用获取变量,因此返回修改后的字符串:
if($var != 0) { $var = mysql_real_escape_string($var) });
答案 1 :(得分:2)
试试这个:
$query = sprintf("SELECT * FROM table%s", $var != 0 ? " WHERE var = '" . mysql_real_escape_string($var) . "'" : "");
答案 2 :(得分:2)
不要使用PHP;使用数据库。
$db = new PDO($dsn, $username, $password, $database);
$stmt = $db->prepare('SELECT * FROM table WHERE (:select <> 0 AND column = :value)');
$stmt->execute(array(':select' => $var, ':value' => $var));
答案 3 :(得分:0)
$var = $_GET["var"];
$string ='';
if ($var != 0) {
$string = "WHERE var =". $var . " ";
}
$query = sprintf("SELECT * FROM table ". $string.");
$result = mysql_query($query);