可能的MySql语法问题

Possible MySql syntax issue

本文关键字:语法 问题 MySql      更新时间:2023-09-26

我想弄清楚为什么我的查询不工作,但它对我没有意义。我通过php访问一个数据库,列出国家及其附属城市/城镇,我有一个javascript脚本,将它们显示为菜单。每个州都有一个增加100,000的ID(在数据库中,"Alabama"是100,000,"Alaska"是200,000)。所以我在MySQL中测试了我的查询,它工作正常,我测试了javascript的值,被发送到php脚本,它是正确的,但返回的菜单包含比它应该包含更多的值。

我的查询如下:

mysql_query("SELECT * FROM fullstates WHERE code > '$state' AND code < '$state' + 100000");

其中state是前一个被选中的状态的ID。我唯一能想到的就是AND不能正常工作了?

代码是数字还是文本?似乎它们应该是数字,在这种情况下,你应该去掉单引号:

mysql_query("SELECT * FROM fullstates WHERE code > $state AND code < ($state + 100000)");

您也应该将其参数化,但这是另一个问题。

mysql_query("SELECT * FROM fullstates WHERE code > '$state' AND code < '$state' + 100000");

…其中200,000> 100,000 AND 200,000 <100,000 + 100,000

如果state = 100,000且code为200,000,则第一个布尔值为真,但现在检查code(200,000)是否小于state(100,000) + 100,000。

换句话说,你检查的是200000 <200000,所以你的检查是WHERE (TRUE[第一个表达式]AND FALSE[第二个表达式])