编辑:我通过删除准备好的语句来使其工作。使用准备好的语句的所有文件同时中断。是否有可能造成此惨败的某种服务器设置更改?当前的PHP设置https://imgur.com/a/TpTwb7D
这让我难过了几个小时。我正在尝试通过jquery将用户提交的表单提交到数据库中,并且它的工作原理是,所提交的已发布整数字段是8个字符长的随机整数而不是所提交的值。表单中的字符串根本不传递任何内容。当我在mysqli上方手动定义变量时,它可以正常工作。表单/字段名称也在HTML中正确命名。奇怪的是,我记得这段代码大约在5个月前就可以使用了,但是我不知道发生了什么变化。任何帮助是极大的赞赏!
我注意到另一个使用相同方法的jquery表单也坏了,我知道这是可行的。它具有与提交随机整数相同的问题。最后,还有另一种功能相同的表单,但是没有准备好的语句来正确提交数据。
PHP:
$urlId = $_POST['urlId'];
$giverId = $_SESSION["mem_id"];
$receiverId = $_POST['receiverId'];
$feedback = $_POST['feedback'];
$conn = new mysqli($host, $user, $passwrd, $db);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (!($stmt = $conn->prepare("INSERT INTO cc_feedback (url_id, giverId, receiverId, feedback, date) VALUES (?, ?, ?, ?, NOW())"))) {
echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
}
if (!$stmt->bind_param("iiis", $urlId, $giverId, $receiverId, $feedback)) {
echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
$conn->close();
JS:
(document).ready(function() {
$('#feedback-form').submit(function(e){
e.preventDefault();
$.post('include/insertdata.php', $(this).serialize() )
.done(function(data){
// do stuffs
})
.fail(function(){
//alert('Ya done');
});
});
});
数据库条目:
如果表单包含以下字段:
urlId:123
receiverId:123
反馈:测试
giverId是会话处理的(用户ID为555。此字段有效)
然后数据将显示在数据库中,如下所示:
urlId:39361776
receiverId:39361904
反馈:NULL
giverId:555
我通过在insertdata.php页面上将urlId设置为单独的会话变量来检查数据是否正在传递到文件。它显示为正确的urlId(在这种情况下为123)