<html>
<body>
<form method="post">
Name: <input type="text" name="Name"><br>
Phone Number: <input type="text" name="Number"><br>
<input type="submit">
</form>
<?php
session_start();
$name = $_POST["Name"];
$number = $_POST["Number"];
$sql = "INSERT INTO contacts (Name, Number)
VALUES (' . $name . ', ' . $number . ')";
if ($_SESSION["connect"]->query($sql) === true) {
echo "Success";
}
else {
echo "Fail: " . $_SESSION["connect"]->error;
}
?>
</body>
`enter code here`</html>
所以这是我的代码,它显示2个错误阻止我向mysql数据库添加数据。这两个错误都说程序无法在if语句中的$ _SESSION [“connect”]中获取mysqli。
任何人都可以查看我的代码并为我编辑吗?真的很感激。
答案 0 :(得分:1)
您正在尝试连接但未关闭引号。你也不需要在这里连接,因为你使用的是双引号。
$sql = "INSERT INTO contacts (Name, Number)
VALUES ('$name', '$number')";
这应该执行您的查询。但仍然让你对SQL注入开放。一个解决方案,http://php.net/manual/en/mysqli.real-escape-string.php,
$name = $_SESSION["connect"]->real_escape_string($_POST["Name"]);
$number = $_SESSION["connect"]->real_escape_string($_POST["Number"]);
准备好的陈述会更好。请参阅此主题How can I prevent SQL injection in PHP?。
如评论中所述,错误报告也可以帮助您调试这些问题。如果我不确定它将如何执行(或者如果它不起作用),我也倾向于输出我的查询并执行。
如果你因某种原因想要连接它......
$sql = "INSERT INTO contacts (Name, Number)
VALUES ('" . $name . "', '" . $number . "')";