为什么这个PHP / mySQL查询给我一个错误?

时间:2015-06-19 21:21:18

标签: php mysql

我正在生成查询的第一部分,如下所示:

`productList`.`name`

然后第二部分是这样的:

while ($all_products = $db->fetch_array($all_prods))
        {
            $filter_string .= 'AND product_id !=';
            $filter_string .= $all_products['item_id'];
            $filter_string .= ' ';
}

然而,它给了我一个mySQL语法错误,而$sql_more_items = $db->query("SELECT * FROM db_products WHERE owner_id='" . $user_id . "' AND active=1 '" . $filter_string . "' ORDER BY RAND() LIMIT 10"); 部分在字符串之前和之后奇怪地添加$filter_string两次,所以它运行如下:

'

我做错了什么?

3 个答案:

答案 0 :(得分:3)

$filter_string添加'因为你把它放在那里。 :P

尝试使用$filter_string周围的双引号:

$sql_more_items = $db->query("SELECT * FROM db_products WHERE owner_id='" . $user_id . "' AND active=1 " . $filter_string . "ORDER BY RAND() LIMIT 10");

答案 1 :(得分:2)

 ViewGroup parent = (ViewGroup)viewToRemove.getParent();
            parent.removeView(viewToRemove);
            parent.addView(viewToRemove, index);

检查您执行字符串连接的方式(将字符串放在一起)。您似乎在使用'"'''''''而不只是一个"

我会通过重新格式化代码来使用空格(和一个好的代码编辑器),如下所示:

$sql_more_items = $db->query("SELECT * FROM db_products 
WHERE owner_id='" . $user_id . "' AND active=1 '" . $filter_string . "' 
ORDER BY RAND() LIMIT 10");

这种风格可以帮助您跟踪您是否正在使用"或者'对于你的字符串,也可以帮助你更容易地调试事情,而不是将它放入一个难以阅读的巨大字符串中。

答案 2 :(得分:1)

这可能是因为部分

`"' AND active=1 '"`
                 ^.... This ' here