的index.php
<html>
<head>
<title>Josh's Online Playground</title>
</head>
<body>
<form method="POST" action="action.php">
<table>
<tr>
<td>"data for stuff"</td>
<td><input type="text" ?></td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</table>
</form>
</body>
</html>
action.php的
<?php
error_reporting(E_ALL);
ini_sit("display_errors", 1);
$mysqli = new mysqli('localhost', 'root', 'password', 'website');
$result = $mysqli->query("insert into stuff (data) values ('
.$_POST['data']
."');
echo $mysqli->error();
if($result = $mysqli->query("select data from stuff")){
echo 'There are '.$result->num_rows.' results.';
}
while ($row = $result->fetch_object()){
echo 'stuff' . $row->data;
}
?>
尽管action.php中有前两行,但我没有收到错误或警告消息。 相反,我在点击提交按钮后会看到一个空白页面。
我是否必须以不同的方式插入数据?
答案 0 :(得分:3)
你在action.php中有语法错误:
第2行ini_set 不是 ini_sit !
答案 1 :(得分:1)
您有致命错误,因此脚本无法运行,因此无法报告任何错误。 看看这一行:
$result = $mysqli->query("insert into stuff (data) values ('
.$_POST['data']
."');
应阅读:
$result = $mysqli->query("insert into stuff (data) values ('".$_POST['data']."')");
在使用SQL语句
之前转义$ _POST ['data']值答案 2 :(得分:1)
ini_sit
必须是
ini_set
)
答案 3 :(得分:0)
您的代码中的某个地方(请求结尾处)有单引号和双引号。确保display_error php设置在
上答案 4 :(得分:0)
好的,首先,你有一个庞大的SQL注入漏洞。其次,您没有错误检查。第三,你的报价被错误地嵌套(这将导致致命的错误,这就是你没有看到任何东西的原因)
将其修改为以下内容:
$mysqli = new mysqli('localhost', 'root', 'password', 'website');
if ($mysqli->connecterror) {
//There was an error connecting, handle it
}
$result = $mysqli->query("insert into stuff (data) values ".
" ('".$mysqli->real_escape_string($_POST['data'])."')";
if ($result === false) {
//Query error, handle it
}
此外,您循环访问数据而不检查结果是否有效:
if($result = $mysqli->query("select data from stuff")){
echo 'There are '.$result->num_rows.' results.';
while ($row = $result->fetch_object()){
echo 'stuff' . $row->data;
}
}