PHP MySQL不支持IN吗?

Tyl*_*ler 0 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);
Run Code Online (Sandbox Code Playgroud)

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

如果我删除"AND f.state IN('AL','FL')ORDER BY fname;";"查询有效但给了我每一个状态.所以最大的问题是...... PHP是否有问题IN声明?

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

Ben*_*rne 6

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

mysql_select_db('database_name', $db);
Run Code Online (Sandbox Code Playgroud)

这应该在调用mysql_connect()函数之后.

http://uk.php.net/mysql_select_db

它将在成功时提供真/假,因此您可以使用以下内容确保连接.

if( ! mysql_select_db('database_name', $db) ) {
    die('failed to select database');
}
Run Code Online (Sandbox Code Playgroud)

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

$result = mysql_query($query);
Run Code Online (Sandbox Code Playgroud)

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

$result = mysql_query($query) or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)