PHP无法获取mysqli

时间:2015-06-17 20:29:49

标签: php mysql mysqli session-variables

<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。

任何人都可以查看我的代码并为我编辑吗?真的很感激。

1 个答案:

答案 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 . "')";