PHP脚本未更新mysql表

PHP脚本未更新mysql表,php,mysql,Php,Mysql,这个脚本根本不起作用。。。谁能告诉我我做错了什么 $id = $_POST['id']; $name = $_POST['name']; $date = $_POST['date']; $shortdesc = $_POST['shortdesc']; $link = $_POST['link']; $target = $_POST['target']; $sort = $_POST['sort']; $html = $_POST['html']; include('appvars.p

这个脚本根本不起作用。。。谁能告诉我我做错了什么

$id = $_POST['id'];
$name = $_POST['name'];
$date = $_POST['date'];
$shortdesc = $_POST['shortdesc'];
$link = $_POST['link'];
$target = $_POST['target'];
$sort = $_POST['sort'];
$html = $_POST['html'];

    include('appvars.php');

    $query = "UPDATE insight SET name='".$name."' AND SET date='". $date . "' AND SET html='" . $html . "' AND SET shortdesc='" . $shortdesc . "' AND SET link='" . $link . "' AND SET target='" . $target . "' AND SET sort='" . $sort . "' WHERE id='" . $id . "'";

    mysqli_query($dbc, $query);
您不是您的值,因此容易受到SQL注入和无效语句构造的攻击。例如,如果任何输入字符串包含撇号,则可能导致代码失败

看一看,这将使构造查询变得更加容易

在查询中,您还需要使用逗号而不是
,并设置

$query = "UPDATE insight SET name='foo', date='2012-12-10' WHERE id=42";
MySQL文档中描述了更新的语法:

您不是您的值,因此容易受到SQL注入和无效语句构造的攻击。例如,如果任何输入字符串包含撇号,则可能导致代码失败

看一看,这将使构造查询变得更加容易

在查询中,您还需要使用逗号而不是
,并设置

$query = "UPDATE insight SET name='foo', date='2012-12-10' WHERE id=42";
MySQL文档中描述了更新的语法:

    • 像这样使用它

      $query = "UPDATE insight SET name='".$name."' ,date='". $date . "' ,html='" . $html . "' ,shortdesc='" . $shortdesc . "' ,link='" . $link . "' ,target='" . $target . "' ,sort='" . $sort . "' WHERE id='" . $id . "'";
      
      这样用,

      $query = "UPDATE insight SET name='".$name."' ,date='". $date . "' ,html='" . $html . "' ,shortdesc='" . $shortdesc . "' ,link='" . $link . "' ,target='" . $target . "' ,sort='" . $sort . "' WHERE id='" . $id . "'";
      

      它的工作。。。现在检查

       $id = $_POST['id'];
          $name = $_POST['name'];
          $date = $_POST['date'];
          $shortdesc = $_POST['shortdesc'];
          $link = $_POST['link'];
          $target = $_POST['target'];
          $sort = $_POST['sort'];
          $html = $_POST['html'];
      
              include('appvars.php');
      
             $query = "UPDATE insight SET name='".$name."' ,date='". $date . "' ,html='" . $html . "' ,shortdesc='" . $shortdesc . "' ,link='" . $link . "' ,target='" . $target . "' ,sort='" . $sort . "' WHERE id='" . $id . "'";
      
      
      
              mysqli_query($dbc, $query);
      

      它的工作。。。现在检查

       $id = $_POST['id'];
          $name = $_POST['name'];
          $date = $_POST['date'];
          $shortdesc = $_POST['shortdesc'];
          $link = $_POST['link'];
          $target = $_POST['target'];
          $sort = $_POST['sort'];
          $html = $_POST['html'];
      
              include('appvars.php');
      
             $query = "UPDATE insight SET name='".$name."' ,date='". $date . "' ,html='" . $html . "' ,shortdesc='" . $shortdesc . "' ,link='" . $link . "' ,target='" . $target . "' ,sort='" . $sort . "' WHERE id='" . $id . "'";
      
      
      
              mysqli_query($dbc, $query);
      

      我不是mysql的专业人士,只是一次尝试

      我猜
      id
      是一个整数。所以,不要引用它

      试试这个

      $query = "UPDATE insight SET name='".$name."' , date='". $date . "' , html='" . $html . "' , shortdesc='" . $shortdesc . "' , link='" . $link . "' , target='" . $target . "' , sort='" . $sort . "' WHERE id=". $id ;
      

      我不是mysql的专业人士,只是一次尝试

      我猜
      id
      是一个整数。所以,不要引用它

      试试这个

      $query = "UPDATE insight SET name='".$name."' , date='". $date . "' , html='" . $html . "' , shortdesc='" . $shortdesc . "' , link='" . $link . "' , target='" . $target . "' , sort='" . $sort . "' WHERE id=". $id ;
      

      我认为SQL语法不正确,您可以这样使用:
      updatetablename SET rowname=value,…。

      我认为SQL语法不正确,您可以这样使用:
      updatetablename SET rowname=value,…。

      现在不担心这一点。不是公共表单,仅供我自己使用。@user1427274转义值与安全无关;这是关于正确的解释。安全只是一个副产品。如果我转义值,我还能插入html吗?@user1427274:当然可以。如果你不这样做,它就不可能起作用。万一你想知道它们是什么。你也可以用一个现在不担心的方法。不是公共表单,仅供我自己使用。@user1427274转义值与安全无关;这是关于正确的解释。安全只是一个副产品。如果我转义值,我还能插入html吗?@user1427274:当然可以。如果你不这样做,它就不可能起作用。万一你想知道它们是什么。您也可以使用一个,它将“name”设置为0,而不是给定的“testing”,其余值不受影响。这可能是由于您设置的列的数据类型所致。您应该将其设置为
      text
      varchar
      以接受非数字值。使用此选项时,它将“name”设置为0,而不是给定的“testing”,其余值不受影响。这可能是由于您设置的列的数据类型所致。您应该将其设置为
      text
      varchar
      以接受非数字值在SQL查询后查看正在执行的操作passed@tunmisefasipe,最基本也是必须做的事情:)+1在查询后调用以检查它是否返回任何错误。这在generalput
      echo($query)中是一个很好的实践在SQL查询后查看正在执行的操作passed@tunmisefasipe,最基本也是必须做的事情:)+1在查询后调用以检查它是否返回任何错误。总的来说,这是一个很好的做法