【问题标题】:While Loop in SQL querySQL查询中的while循环
【发布时间】:2013-09-24 02:20:39
【问题描述】:

我不确定为什么这个 SQL 查询不起作用。

我是 SQL/PHP 新手,请见谅。

mysql_query("
    SELECT * FROM table WHERE name = " . "'Bob'" . 
    while($i < $size)
    {
        $i++; 
        echo "OR name = '"; 
        echo $array[$i] . "'";
    } . 
    " ORDER BY id DESC "
);

Dreamweaver 给我一个错误,说它不正确,但没有告诉我哪里出了问题。

是否可以在 sql 命令中加入 while 循环?

【问题讨论】:

  • 建议,先尝试将您的查询运行到 sql 中,使其工作,然后将其移动到您的代码中

标签: php mysql sql while-loop


【解决方案1】:

你不能在字符串中使用while

$where = "";
if ($size > 0) 
{
$where .= " WHERE ";
}
while($i < $size)
{
$i++;
$where .= "OR name = '".$array[$i]."' ";
}

$query = "SELECT * FROM table WHERE name = '".Bob."'".$where." ORDER BY id DESC";
mysql_query($query);

(此代码未经测试)

【讨论】:

    【解决方案2】:

    哇!

    你不能写这个:D

    在编写查询之前构建您的OR 条件,这样就可以了:

    $myCondition = " ";
    while($i < $size) {
        $i++;
        $myCondition .= "OR name = '" . $array[$i] . "'";
    }
    mysql_query(
        "SELECT * FROM table WHERE name = " . "'Bob'" . $myCondition . " ORDER BY id DESC ");
    

    【讨论】:

      【解决方案3】:

      echo是输出字符串,不会返回字符串。

      $str = "aaa" . echo "bbb"; 之类的东西不起作用。

      对于你的情况,使用IN会更好。

      foreach ($array as &$name) {
        $name = "'".mysql_real_escape_string($name)."'";
      }
      mysql_query("SELECT * FROM table WHERE name IN (".implode(',', $array).")");
      

      【讨论】:

        【解决方案4】:

        或者使用

        "SELECT * FROM table WHERE name IN(".implode( ',', $array).")";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-11
          • 2013-03-11
          • 2013-10-27
          • 2017-09-01
          • 2014-06-18
          • 2013-07-01
          • 2014-10-18
          • 1970-01-01
          相关资源
          最近更新 更多