Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
带有MySQL的PHP变量(SET';$field';=';$value';)_Php_Mysql - Fatal编程技术网

带有MySQL的PHP变量(SET';$field';=';$value';)

带有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用大括号括起来(可选) 结果:

我尝试在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 = "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(错误报告链接)

    PDO


    删除
    设置“$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);