PHP MySQL不支持IN吗?

时间:2011-11-23 21:12:51

标签: php mysql

好的,我有一个相当长的查询,只有在我添加一个IN语句时才会失败。以下查询在MySQL控制台中直接运行良好,但在PHP中完成时不返回任何内容。

$db = mysql_connect('localhost', 'something', 'somepassword');

$query = "SELECT * 
FROM alt_table f 
INNER JOIN alt_fac_table_c cl ON (f.id = cl.alt_table2_ida) 
INNER JOIN alt_table c ON (cl.alt_table_idb = c.id) 
LEFT OUTER JOIN alt_table_contacts_c con ON (f.id = con.alt_table_ida) 
LEFT OUTER JOIN contacts cc ON (con.alt_table_idb = cc.id) 
WHERE c.name = 'myname' 
AND f.state IN ('AL','FL') ORDER BY fname;";

$result = mysql_query($query);

问题不在于连接数据库而不是查询本身。显然我已经重命名了几个东西,但查询是一样的。在PHP中,它不返回任何内容(没有错误,没有任何内容),但在SSH / Console中它返回我需要的所有行。

如果我删除“AND f.state IN('AL','FL')ORDER BY fname;”;“查询有效但给了我每一个状态。所以最大的问题是...... PHP有没有IN语句有问题吗?

更新修正  它最终成为帖子数据的问题。我发布了'AL',FL'的单引号。它显然是在帖子上奇怪地编码它们。我假设某种安全功能。我从帖子中取出了引用,并将其添加到服务器端PHp,而且它可以工作。

3 个答案:

答案 0 :(得分:6)

你忽略了选择数据库......

mysql_select_db('database_name', $db);

这应该在调用mysql_connect()函数之后发生。

http://uk.php.net/mysql_select_db

成功时会提供真/假,因此您可以使用以下内容确保连接。

if( ! mysql_select_db('database_name', $db) ) {
    die('failed to select database');
}

除上述内容外,您还可以修改以下行

$result = mysql_query($query);

更像是以下内容。这将显示返回的任何错误,并在您的情况下显示No database selected错误

$result = mysql_query($query) or die(mysql_error());

答案 1 :(得分:0)

来自http://php.net/manual/en/function.mysql-query.php

The query string should not end with a semicolon.

尝试删除它,看看它是否有效。

答案 2 :(得分:0)

最终导致帖子数据出现问题。我发布了'AL',FL'的单引号。它显然是在帖子上奇怪地编码它们。我假设某种安全功能。我从帖子中取出了引用,并将其添加到服务器端PHp,它可以工作。