PHP脚本没有更新mysql表

时间:2012-06-06 05:48:32

标签: 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.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);

5 个答案:

答案 0 :(得分:5)

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

查看prepared statements,可以更轻松地使用parameters构建查询。

在您的查询中,您还需要使用逗号代替AND SET

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

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

答案 1 :(得分:0)

像这样使用,

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

答案 2 :(得分: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);

答案 3 :(得分:0)

我是mysql的专家,但是试一试。

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

试试这个,

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

答案 4 :(得分:0)

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