Php mysqli_查询的“单引号”和“反勾号”之间的差异

Php mysqli_查询的“单引号”和“反勾号”之间的差异,php,mysqli,Php,Mysqli,这很奇怪,因为PHP5.5+,我将一些代码从mysql改为mysqli函数,在这两个基本示例中,mysql_query没有“单引号”和“反勾号”,运行良好 $sql = "SELECT * FROM `".$table."`"; // requires: ` ` or fails $result = mysqli_query($con,$sql); $sql = "SHOW TABLES LIKE '".$table."'"; // requires: ' ' or fails $result

这很奇怪,因为PHP5.5+,我将一些代码从mysql改为mysqli函数,在这两个基本示例中,mysql_query没有“单引号”和“反勾号”,运行良好

$sql = "SELECT * FROM `".$table."`"; // requires: ` ` or fails
$result = mysqli_query($con,$sql);

$sql = "SHOW TABLES LIKE '".$table."'"; // requires: ' ' or fails
$result = mysqli_query($con,$sql);
有人能解释一下原因吗


编辑:我想我的问题的实质是:这两个函数在没有任何类型的mysql\u查询引号的情况下运行良好,并且在没有任何类型引号的情况下都失败了mysqli\u查询。这意味着在第一个select语句中,当从mysql_uu更改为mysqli_uu时,我将不得不摆弄查询的一半。您试图按表名选择表,因此它将接受带`或不带`的名称,但现在使用单引号或双引号。这些措施应该有效:

 $sql = "SELECT * FROM `table_name`";
 $sql = "SELECT * FROM table_name";
在第二种情况下,需要传入一个字符串,以便like语句进行比较,因此需要用单引号或双引号将其括起来:

编辑:

请同时查看上一个答案:

编辑2:


因为我们和我在评论中都提到反勾号在某种程度上是可选的,所以请记住,作为一种最佳实践,尽可能使用它们,因为尽管它允许您在不使用它们的情况下传递大多数查询,但当在$table中包含您的表名时,一些使用MySql保留字的查询将中断?保留字呢?当您使用非保留表名时,没有理由使用引号。我认为您不需要任何引号$sql=SELECT*FROM.$table。;如果这个查询需要``这个,那么我们需要知道您的表名可能重复:这两个函数在没有任何类型的mysql\u查询引号的情况下运行良好,并且在没有任何类型引号的情况下都失败了mysqli\u查询。这意味着,当从mysql_uu更改为mysqli时,我将不得不处理一半的查询_
$sql = "SHOW TABLES LIKE 'string'";
$sql = "SHOW TABLES LIKE \"string\"";