繁体   English   中英

PHP查询中的if if语句

[英]PHP if statement in SQL query

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

谢谢您的帮助!!

你不能在字符串连接中有一个if表达式。 此外,你错过了尾随"

$query = sprintf("SELECT * FROM table ". $var != 0 ? "WHERE var = '%s'" : "");

此外, mysql_real_escape_string()不通过引用获取变量,因此返回修改后的字符串:

if($var != 0) { $var = mysql_real_escape_string($var) });

尝试这个:

$query = sprintf("SELECT * FROM table%s", $var != 0 ? " WHERE var = '" . mysql_real_escape_string($var) . "'" : "");

不要使用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));
$var = $_GET["var"];
$string ='';
if ($var != 0) {
  $string = "WHERE var =". $var . " ";
}

$query = sprintf("SELECT * FROM table ". $string.");

$result = mysql_query($query);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM