php-mysql查询中变量的单引号

php-mysql查询中变量的单引号,php,mysql,syntax,quotes,Php,Mysql,Syntax,Quotes,为什么我会在几个通过php的mysql查询示例中看到以下语法: $q = "CREATE TABLE '$tablename' ('$t_id_name')"; 或者类似的事情?我问的是变量名周围的单引号。这在MySQL字符串中是必需的吗?如果我回显字符串,无论引号是否存在,它似乎都会展开变量 如果这是为了一个整数而做的,这会造成问题吗?为了回答你的问题,引号是必要的,但不是为了扩展变量。典型的SQL查询如下所示: $q = "SELECT * FROM `table` WHERE `firs

为什么我会在几个通过php的mysql查询示例中看到以下语法:

$q = "CREATE TABLE '$tablename' ('$t_id_name')";
或者类似的事情?我问的是变量名周围的单引号。这在MySQL字符串中是必需的吗?如果我回显字符串,无论引号是否存在,它似乎都会展开变量


如果这是为了一个整数而做的,这会造成问题吗?

为了回答你的问题,引号是必要的,但不是为了扩展变量。典型的SQL查询如下所示:

$q = "SELECT * FROM `table` WHERE `first_name` = 'user3475234'";

现在,考虑下面的例子:

<?php
$tablename = "users";
$user = "user3475234";

$q = "SELECT * FROM `$tablename` WHERE `first_name` = '$user'";

echo $q;

必须对字段或表名使用倒勾(`),尤其是当字段或表名与mysql命令相同时。您需要使用单引号(')表示值

不要仅仅因为在代码中使用变量,就把它们看作变量名;这是您正在构建的MySQL语句。在MySQL中使用倒勾(`),而不是单引号(')来包装表名和列名(尽管只有当它们是MySQL保留字、大小写混合或使用非字母数字字符时才需要它们),我很好奇您是否有意分别键入`and`?是否有一个优于另一个的首选用法,或者它们都只是普通的单引号?另外,我现在正在使用mysqli\u real\u escape\u字符串来避免随之而来的SQL注入(但我认为它不会检查'character')。反勾用于表名和列名,只有当表名或列名是保留的MySQL关键字时才有必要。另一方面,值被引号包围。