PHP查询中的if if语句

时间:2012-01-29 22:22:41

标签: php mysql sql

所以我试图在我的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语句中添加其他子句。

感谢您的帮助!!

4 个答案:

答案 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);