Php 500通过ajax请求调用时尝试插入数据时的内部服务器
我从一个表单获取信息并序列化它,然后在php端提交字符串并反序列化它,所有信息都从表单到脚本被正确接收,但是将数据插入表的查询创建了一个500内部服务器错误。不知道为什么 这是HTMLPhp 500通过ajax请求调用时尝试插入数据时的内部服务器,php,jquery,mysql,ajax,error-handling,Php,Jquery,Mysql,Ajax,Error Handling,我从一个表单获取信息并序列化它,然后在php端提交字符串并反序列化它,所有信息都从表单到脚本被正确接收,但是将数据插入表的查询创建了一个500内部服务器错误。不知道为什么 这是HTML <form role="form" id="reportForm"> <div class="form-group"> <label for="Email1">Your name:</label>
<form role="form" id="reportForm">
<div class="form-group">
<label for="Email1">Your name:</label>
<input type="text" class="form-control" id="user" name="name" placeholder="Your name...">
</div>
<div class="form-group">
<label for="Email1">Page Link:</label>
<input type="text" class="form-control" id="pagelink" name="pagelink" placeholder="page link...">
</div>
<div class="form-group">
<select class="form-control" name="status">
<option val="bug" name="bug">Bug</option>
<option val="issue" name="issue">Issue</option>
<option val="issue" name="issue">Approved</option>
</select>
</div>
<div class="form-group">
<label>What's going on?</label>
<textarea name="msg" id="sit" class="form-control"></textarea>
</div>
<button type="button" id="subm" class="btn btn-default">Report</button>
</form>
下面是PHP:
<?php
include 'connection.php';
$name = $_POST['form'];
parse_str($name, $form_data);
$name = $form_data['name'];
$link = $form_data['pageLink'];
$status = $form_data['status'];
$desc = $form_data['msg'];
mysqli_select_db($mysqli_connection, "mailings_members");
$query = mysqli_query("INSERT into `bugs` (`ticket_author`, `ticket_link`, `ticket_status`, `ticket_message`) VALUES('$name', '$link','$status', '$desc' "))
if(!$query){
die('Invalid query:' . mysql_error());
}else{
echo 'Bam! major ownage';
}
?>
我们将非常感谢您的帮助
$query = mysqli_query("INSERT into `bugs` (`ticket_author`, `ticket_link`, `ticket_status`, `ticket_message`) VALUES('$name', '$link','$status', '$desc' "))
使用结束值列表,使用结束整个函数调用
此外,mysqli不使用mysql_error函数。其他mysql_*函数已弃用,请检查mysqli版本的error函数
也不要忘记转义从客户机获得的变量,这些变量可以包含几乎任何内容。您不想开放sql注入。
要么使用mysqli中提供的escape函数,要么使用mysqli编写的语句,我真的建议这样做
编辑:
查询中缺少$link参数:
function mysqli_query ($link, $query, $resultmode = MYSQLI_STORE_RESULT) {}
如果'mysqli_connection'变量是mysqli对象,请尝试:
$query = mysqli_query($mysqli_connection, "INSERT into `bugs` (`ticket_author`, `ticket_link`, `ticket_status`, `ticket_message`) VALUES('$name', '$link','$status', '$desc')");
您最近是否可能从mysql_*迁移到mysqli jQuery serialize已经在为您创建url了
$("#subm").click(function(){
$.ajax({
type:"POST",
url:"php/create_report.php",
data:$("#reportForm").serialize(), // here you are sending all the params
success: function(data){
$("alert-success").fadeIn();
alert(data);
},
error: function(ajaxrequest, ajaxOptions, thrownError){
$("alert-danger").fadeIn(500);
}
});
})
现在您必须根据正确的post请求修改php代码 检查您的错误日志,如果还没有,请启用PHP错误日志。与问题无关,但请转义这些变量或使用准备好的语句,sql注入是不好的!你有一个错误的地方,因此语法错误-1.还有更大的问题。在使用ajax发送之前,不要将序列化的querystring添加到另一个字符串中,只需发送原始字符串,就不需要parse_str$query=mysqli_queryINSERT-bugs-ticket_-author、ticket_-link、ticket_-status、ticket_-message值“$name”、“$link”、“status”、“desc”结尾处的双引号错位-$query=mysqli_queryINSERT-bugs-ticket-author、ticket_-link、ticket_-status、ticket_-message值“$name”、“$link”、“status”,“$desc”我在查询结束时更正了语法错误,但仍然得到了500个内部服务器错误。如果从浏览器获取页面,是否会出现内部服务器错误?我现在有点猜测,因为我认为大多数语法错误现在都已更正。在编写代码时,您应该获得一个好的PHP IDE来帮助您解决语法错误。如何连接到数据库?“connection.php”文件中包含哪些内容?另外,如其中一条评论所述,检查您的日志,服务器很可能已经在那里放置了一些信息。我最终使查询工作,是查询引用导致它崩溃,我按照您的编辑所说的更正了它,它解决了问题,非常感谢,我将更加关注PHP中的细节。。。我使用Sublime文本,有关于php编码插件的建议吗?再次感谢你的帮助。很高兴能帮上忙,很高兴你能成功。我个人推荐Jetbrains的PHPStorm,它很贵,但我认为它是目前为止最好的PHP IDE。对于一个同样适用于php的免费IDE来说,查看netbeans是值得的我完美地接收到了信息,并且我正在转义变量以防止sql注入,但在尝试将数据记录到表中时,仍然会出现500个内部服务器错误,关于如何使用php有什么建议吗?
$query = mysqli_query($mysqli_connection, "INSERT into `bugs` (`ticket_author`, `ticket_link`, `ticket_status`, `ticket_message`) VALUES('$name', '$link','$status', '$desc')");
$("#subm").click(function(){
$.ajax({
type:"POST",
url:"php/create_report.php",
data:$("#reportForm").serialize(), // here you are sending all the params
success: function(data){
$("alert-success").fadeIn();
alert(data);
},
error: function(ajaxrequest, ajaxOptions, thrownError){
$("alert-danger").fadeIn(500);
}
});
})