Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 select语句不适用于`*`_Php_Mysql - Fatal编程技术网

Php MySQL select语句不适用于`*`

Php MySQL select语句不适用于`*`,php,mysql,Php,Mysql,尝试使用以下语句从我的SQL表加载数据 select `*` from `table_name` 不幸的是,它在MySQL 5.6.33版本中抛出了一个错误,另一方面,它在5.7.25版本中工作正常 我不知道这是配置问题还是版本更改问题,因为我无法找到关于上述问题的清晰文档 另外,编写select语句的首选方式是什么?我应该用“`还是不用?。简短的回答:不需要用记号来包装你的*——事实上,这样做可能会产生误导,或者导致错误 从MySQL手册中 标识符引号字符是反勾号` 这基本上意味着任何引用了

尝试使用以下语句从我的SQL表加载数据

select `*` from `table_name`
不幸的是,它在MySQL 5.6.33版本中抛出了一个错误,另一方面,它在5.7.25版本中工作正常

我不知道这是配置问题还是版本更改问题,因为我无法找到关于上述问题的清晰文档


另外,编写select语句的首选方式是什么?我应该用“`还是不用?。

简短的回答:不需要用记号来包装你的*——事实上,这样做可能会产生误导,或者导致错误

从MySQL手册中

标识符引号字符是反勾号`

这基本上意味着任何引用了反勾号的内容都将被解释为列或表

*是运算符-不是表或列。这个操作符基本上是说给我这个表的所有列。当你这么做的时候

`*`
…您基本上要求MySQL获取一个列的值,该列的确切名称为*,而不是使用实际的运算符*,该运算符将为您提供所有列

从“myTable”中选择*-选择所有列 从“myTable”中选择“*”—尝试选择实际名称为的列* 显然,有一个名为*的专栏将是一个非常糟糕的主意

这很有趣,因为在5.6版和5.7版之间发生了一些变化,请参见fiddles for and,这允许以下表达式有效,尽管我在任何地方都找不到它的文档

SELECT `*` FROM `myTable`

这是select*-不是select`*`也是pos dupe of Hey,@treyBake我已经知道它是在没有背景的情况下工作的我想知道这背后的原因是版本更改还是配置问题。首选的方式是什么?为什么?此外,所提到的帖子通常是针对列名和valuesTicks编写的,这意味着它是一个列或一个表。*选择每一列,但它本身不是一列。如果出于某种原因,您有一个实际名为*的特定列,您可以用记号将其包装起来,并以这种方式从中进行选择。这显然是一个非常糟糕的想法,有一个专栏名为*。长话短说:*是一名操作员。勾号用于列和表,而不是运算符。@amoltite不,自发布以来一直如此。Qirel很好地解释了为什么链接重复是为了显示引号之间的差异。。正如您所看到的,它是用于列名的,*不是列