好的,你可以看到,我做了一个表格。如果我输入姓名并尝试在之后显示它可行,但是当我尝试将其“发布”到数据库并检索它时会出错。它给了我一个“没有结果”。由于我对此很新,我不知道我做错了什么。有人在这看到问题吗?
//Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
//Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "<form action='' method='post'>
Naam: <input type='text' name='name'><br>
Achternaam: <input type='text' name='surname'><br>
<input type='submit'>
</form>";
$name = $_POST["name"];
$surname = $_POST["surname"];
//insert name
$sql = "INSERT INTO Namen
VALUES ($name, $surname)";
$result = $conn->query($sql);
if(!$result){
echo "fout ".mysql_error();
}
$sql = "SELECT Voornaam, Achternaam FROM Namen";
$result = $conn->query($sql);
echo "<table border='1px'>";
echo "<th>Naam</th>";
echo "<th>Achternaam</th>";
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>" .$row["Voornaam"] . "</td>";
echo "<td>" . $row["Achternaam"] . "</td></tr>";
}
} else {
echo "0 results";
}
echo "</table>";
$conn->close();
?>
答案 0 :(得分:1)
你的价值观&#39;变量VALUES ($name, $surname)
必须封装在引号内,因为我们(很可能)处理字符串。
将其更改为VALUES ('$name', '$surname')
您还要混合(他们不要混合)与echo "fout ".mysql_error();
的MySQL API,需要将其更改为echo "fout ".mysqli_error($conn);
,以便为您提供发现实际错误。
此外,您目前的代码向SQL injection开放 使用prepared statements或PDO with prepared statements,他们更安全。
您还应该考虑根据命名的提交按钮在条件语句中包装代码(或您要执行的代码)。
即:
<input type='submit' name='submit' value='Submit'>
然后做
if(isset($_POST['submit'])){...}
{...}
是您的初始查询,和/或PHP / SQL代码的整个(或的一部分)。