2

我有一个查询的开头:

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 引号都围绕 the54和 without,结果是相同的 no rows。

4

2 回答 2

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

于 2010-11-20T12:25:16.883 回答
1

您的查询正在隐式执行 CROSS JOIN,并且它似乎包含太多$符号。

我建议进行以下额外更改:

  • 使用 ANSI-92 连接(JOIN 关键字)而不是 ANSI-89 连接(逗号)。
  • 使用intval应用于 $tf_this_forum 以确保它是一个整数。
  • 考虑使用绑定参数而不是动态地从字符串构造查询。
  • $在引用 PHP 变量时使用。

关于读取 const 表后注意到的错误 Impossible WHERE,这意味着没有匹配的行。检查您正在搜索的行是否确实存在于您的数据库中。可能不是。

于 2010-11-20T12:26:00.530 回答