查询不将数据插入db?

时间:2014-02-14 09:20:41

标签: php mysqli

谁能告诉我这里做错了什么?这让我发疯了!

$mysqli = new mysqli("localhost", "user", "pass", "admin_responsivecontact");


    if ($mysqli->connect_errno) {
        die('Error: Could not connect to database');
    }
    else {echo "success";}
    $sql = 'INSERT INTO contact (id,name,company,job,email,tel,info,guide,add,date) VALUES (1,'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'", "'.$_POST['name'].'")';


    $result = $mysqli->query($sql);

    $mysqli->close();

2 个答案:

答案 0 :(得分:1)

add是MySQL中的reserved word。用反引号括起来!

你应该这样做

'INSERT INTO contact (`id`,`name`,`company`,`job`,`email`,`tel`,`info`,`guide`,`add`,`date`)
                                                                 //Like this          ^---^

答案 1 :(得分:0)

上述代码中的许多问题:

1)易于注射,不进行消毒。
2)重用相同的POST变量,而不是将其存储在一个工作变量中,然后进行消毒 3)使用MySQL关键字作为字段名称而不使用反引号 4)不逃避输入。因此,如果有人输入带撇号的名称,则会发生错误。也与1)有关 5)你有一个名为“id”的字段。它们通常是自动增量的,因此您不能只将它指定为“1”并完成它。一种解决方案是省略它并让MySQL填入适当的当前计数器值 6)显然你有一个叫做“date”的字段,所以它可能是一个打字字段。然而,您似乎为其分配了与其他字段相同的字符串。