好吧,我有一个相当长的查询,只有当我添加一个IN语句时失败。以下查询直接在MySQL控制台中工作良好,但在PHP中完成时不返回任何内容。PHP MySQL不支持IN吗?
$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 /控制台中它将返回我需要的所有行。如果我删除“AND f.state IN('AL','FL')ORDER BY fname;”;“查询的作品,但给我的每一个国家。因此,最大的问题是... PHP是否有IN语句有问题吗?
UPDATE FIX 它最终成为了发布数据的问题,我发布了'AL',FL'的单引号,它显然是在发布后奇怪地编码它们。某种形式的安全功能。我把帖出来后,并加入它,它的服务器端PHP替代和它的作品。
无论您使用哪种编程语言与MySQL进行交互,MySQL都是MySQL。 – BoltClock
讨厌是粗鲁的,但根本无济于事,因为当在shell中直接查询数据库时,这个确切的语句可以工作。 – Tyler
也许如果您发布了未删节的代码,我们可能会提供帮助?另外,用'mysql_error()'检查错误。我还假定你实际上正在对结果集做些什么,而不仅仅是依靠它向你显示带'echo $ result;'或类似行的行? 'while($ row = mysql_fetch_array($ result)){print_r($ row); }' –