好吧,我有一个相当长的查询,只有在我添加一个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,它可以工作.
你忽略了选择数据库......
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)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |