我有一个查询的开头:
SELECT tf_threads.*, tf_posts.* FROM tf_threads, tf_posts WHERE tf_threads.thread_id=54
当然,这只是一个开始 - 我一步一步走,所以随着时间的推移,它会变得更好。然而,我现在坚持的是如何获得WHERE
子句来比较一个表中的列与PHP变量,而不是另一列。
我拥有的PHP是:
SELECT $tf_threads.*, $tf_posts.* FROM $tf_threads, $tf_posts WHERE $tf_threads.thread_id=$tf_this_forum
这里重要的一点是$tf_threads.thread_id=$tf_this_forum
。当我尝试这个时,它只返回没有行,MySQL说:Impossible WHERE noticed after reading const tables
。当然这应该工作正常吗?显然,它没有,所以有人可以帮忙吗?
非常感谢,
詹姆斯
编辑:我也试过在纯MySQL中进行查询:
SELECT tf_threads.*, tf_posts.* FROM tf_threads, tf_posts WHERE tf_threads.thread_id=54
两个WITH引号围绕54
并且没有,并且没有相同的行结果。
答案 0 :(得分:1)
SELECT tf_threads.*, tf_posts.* FROM tf_threads, tf_posts WHERE
tf_threads.thread_id='$tf_this_forum'
注意:如果尚未转义,则应mysql_real_escape_string
$tf_this_forum
。
答案 1 :(得分:1)
您的查询隐式执行CROSS JOIN,但它似乎包含太多$
个符号。
我建议进行以下额外更改:
intval
应用于$ tf_this_forum以确保它是一个整数。$
。关于错误不可能在读取const表后注意到,这意味着没有匹配的行。检查您要搜索的行是否确实存在于您的数据库中。它可能不是。