Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 500通过ajax请求调用时尝试插入数据时的内部服务器_Php_Jquery_Mysql_Ajax_Error Handling - Fatal编程技术网

Php 500通过ajax请求调用时尝试插入数据时的内部服务器

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

我从一个表单获取信息并序列化它,然后在php端提交字符串并反序列化它,所有信息都从表单到脚本被正确接收,但是将数据插入表的查询创建了一个500内部服务器错误。不知道为什么

这是HTML

<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);
          }
        });

    })