带有MySQL的PHP变量(SET';$field';=';$value';)
我尝试在MySQL查询中使用PHP变量,如下所示:带有MySQL的PHP变量(SET';$field';=';$value';),php,mysql,Php,Mysql,我尝试在MySQL查询中使用PHP变量,如下所示: $field = "name_of_field"; $value = "new_value"; $sql = "UPDATE table SET '$field' = '$value'"; 它不起作用。当我取出$field变量并只使用一个字段的名称时,它就起作用了。如果在字段名称周围不使用单引号,那么使用反勾号`有两件事是错误的 首先,您需要将$sql的值用引号括起来 您需要删除$field 您可以将$field用大括号括起来(可选) 结果:
$field = "name_of_field";
$value = "new_value";
$sql = "UPDATE table SET '$field' = '$value'";
它不起作用。当我取出$field变量并只使用一个字段的名称时,它就起作用了。如果在字段名称周围不使用单引号,那么使用反勾号`有两件事是错误的
$sql
的值用引号括起来$field
$field
用大括号括起来(可选)$field = "name_of_field";
$value = "new_value";
$sql = "UPDATE table SET `{$field}` = '$value'";
删除列名周围的引号
$field = "name_of_field";
$value = "new_value";
$sql = "UPDATE table SET $field = '$value'";
或者使用反勾号
$field = "name_of_field";
$value = "new_value";
$sql = "UPDATE table SET `$field` = '$value'";
SELECT `column one` FROM `my table`
在列名(和/或表)周围使用反勾号可以确保没有使用(mysql)以及在单词之间使用空格。不鼓励这种做法
例如:(这里有一些保留字的示例)-如果将来出现这种情况,请尝试不要将这些保留字用于表名和/或列名
- 为了
- 到
- 作为
- 描述
- 是
- 等等
mysql.com
上的以下页面:
SELECT column one FROM my table
会产生错误
最好使用下划线,而不是连字符(将来的开发也应该如此)。不鼓励使用连字符作为分词符,因为SQL会将连字符误解为减号,以为您想做某种形式的数学题
开发时:(使用错误报告) 如果使用
mysqli
函数,则会出现以下情况:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
MySQL(错误报告链接)
设置“$field”中的引号
它是一列而不是一个值。$sql=“UPDATE table SET$field='$value'
$sql=“更新表集$field='$value'代码>应该可以工作-缺少换行引号@Sol Plus,如果是打字错误,请使用实际值编辑您的问题。@Fred ii-您是对的,当我删除$field的引号时,它可以工作。当我删除$field周围的单引号时,ThanksIt起了作用。使用反勾号或大括号的原因是什么?这只是一个标准吗?唯一需要使用反勾号的时候是,如果您给了表或列一个保留字的名称,或者名称中有空格或其他特殊字符。我强烈建议您不要使用需要倒勾的表名或列名。您可能认为使用`total count`
而不是total\u count
没有什么大不了的,但是在以后的过程中,您会后悔,因为容易出现错误。编辑以删除关于使用backtick的注释在我刚刚删除引号时,它起了作用。使用backticks有什么意义?backticks允许您转义MySQL关键字(即,如果您有一个名为“group”的列,您需要将其命名为group
,因为group是保留关键字)。这是有道理的,但因为我使用的是一个变量,backticks不应该有什么关系?不应该有什么关系,只要你没有使用我在回答中概述的MySQL保留字@sol值本身可以是保留字,这不是问题,只要格式正确即可。另一方面,使用保留字选择表和列名必须转义@溶胶
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);