谁能告诉我这里做错了什么?这让我发疯了!
$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();
答案 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”的字段,所以它可能是一个打字字段。然而,您似乎为其分配了与其他字段相同的字符串。