0

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

$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);
4

5 回答 5

5

您没有转义您的值,因此您很容易受到 SQL 注入以及无效语句的构造的影响。例如,如果您的任何输入字符串包含撇号,那么它可能会导致您的代码失败。

查看prepared statements,这将使使用参数构造查询变得更加容易。

在您的查询中,您还需要使用逗号而不是AND SET.

$query = "UPDATE insight SET name='foo', date='2012-12-10' WHERE id=42";

MySQL 文档中描述了 UPDATE 的语法:

于 2012-06-06T05:49:45.750 回答
0

我认为 SQL 语法不正确,可以这样使用:UPDATE tablename SET rowname = value , ....

于 2012-06-06T06:15:01.690 回答
0

像这样使用它,

$query = "UPDATE insight SET name='".$name."' ,date='". $date . "' ,html='" . $html . "' ,shortdesc='" . $shortdesc . "' ,link='" . $link . "' ,target='" . $target . "' ,sort='" . $sort . "' WHERE id='" . $id . "'";
于 2012-06-06T05:50:51.157 回答
0

它的工作......现在检查

 $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);
于 2012-06-06T05:55:21.740 回答
0

我不是 mysql 的专业人士,但可以尝试一下。

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

尝试这个,

$query = "UPDATE insight SET name='".$name."' , date='". $date . "' , html='" . $html . "' , shortdesc='" . $shortdesc . "' , link='" . $link . "' , target='" . $target . "' , sort='" . $sort . "' WHERE id=". $id ;
于 2012-06-06T05:57:19.713 回答