Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql WHERE子句错误_Php_Mysql_Where Clause - Fatal编程技术网

Php mysql WHERE子句错误

Php mysql WHERE子句错误,php,mysql,where-clause,Php,Mysql,Where Clause,有人知道为什么这不起作用吗 $category = 1; $CategoryResult = mysql_query("SELECT * FROM Category WHERE Index = '$category'"); if (!$CategoryResult) die("Could not retrieve results from category $category: " . mysql_error()); Mysql错误如下: 无法从类别1检索结果:您的SQL语法有错误;

有人知道为什么这不起作用吗

$category = 1;
$CategoryResult = mysql_query("SELECT * FROM Category WHERE Index = '$category'");
if (!$CategoryResult) 
    die("Could not retrieve results from category $category: " . mysql_error());
Mysql错误如下:

无法从类别1检索结果:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“Index=”1附近使用的正确语法


索引是表类别的自动递增主键。

可能索引是保留字。试试这个

$CategoryResult = mysql_query("SELECT * FROM Category c WHERE c.`Index` = '$category'");

并检查索引是字符串还是整数

也许索引是保留字。试试这个

$CategoryResult = mysql_query("SELECT * FROM Category c WHERE c.`Index` = '$category'");

并检查索引是字符串还是整数

我可以看到两个问题。如果它是主键,那么应该使用WHERE Index=$类别


其次,索引在MySQL中是一个保留字。

我可以看到两个问题。如果它是主键,那么应该使用WHERE Index=$类别

其次,Index在MySQL中是一个保留字。

您应该引用Index,因为它是一个MySQL关键字;比如:

SELECT * FROM Category WHERE `Index` = $category;
假设$category是数字,单引号是不必要的,并且与ANSI SQL不兼容。

您应该引用Index,因为它是MySQL关键字;比如:

SELECT * FROM Category WHERE `Index` = $category;

如果$category是数字,则单引号是不必要的,并且与ANSI SQL不兼容。

这应该是您的代码

$category = 1;
$CategoryResult = mysql_query("SELECT * FROM Category WHERE `Index` = $category");
if (!$CategoryResult) 
    die("Could not retrieve results from category $category: " . mysql_error());
通常我会宣传mysql\u real\u escape\u string,但是如果$category在您的控制下,比如来自另一个查询,并且它保证是int,那么这段代码是安全的

索引是一个保留字-必须反勾选 不要引用数字。MySQL确实有将字符串文字与数字进行比较的规则,但除非您熟悉这些规则,否则只需使用正确的数字即可。 范例

select * from
(
select 1 `index`
union all
select 2
union all
select 3
) X
where `index` = '1-2-3-4'
   or `index` = '3.0Y!'
输出

`index`
1
3

这应该是你的代码

$category = 1;
$CategoryResult = mysql_query("SELECT * FROM Category WHERE `Index` = $category");
if (!$CategoryResult) 
    die("Could not retrieve results from category $category: " . mysql_error());
通常我会宣传mysql\u real\u escape\u string,但是如果$category在您的控制下,比如来自另一个查询,并且它保证是int,那么这段代码是安全的

索引是一个保留字-必须反勾选 不要引用数字。MySQL确实有将字符串文字与数字进行比较的规则,但除非您熟悉这些规则,否则只需使用正确的数字即可。 范例

select * from
(
select 1 `index`
union all
select 2
union all
select 3
) X
where `index` = '1-2-3-4'
   or `index` = '3.0Y!'
输出

`index`
1
3

可能就是这样。索引是一个非常糟糕的列名,我会更改它。这可能就是它。索引是一个非常糟糕的列名,我会更改它。您的上一条语句不正确。MySql将把它转换成一个数字。@Scrum-Meister-你说得对。我更新了答案,将其改为警告/建议。您上次的陈述不正确。MySql将把它转换成一个数字。@Scrum-Meister-你说得对。我更新了答案,将其改为警告/建议。