php - 使用 mysql 查询时 JSON/PHP 不工作

标签 php jquery mysql json

我正在尝试使用 json,由于某种原因,在我实现任何类型的 mysql 之前,它都可以正常工作。这是我从教程中偷来的。我尝试使用准备好的语句和基本的 mysqli 查询;但是,当我这样做时,没有返回任何数据。

这是jquery:

<script type="text/javascript">
$("document").ready(function(){
  $(".sendText").submit(function(){
    $(".errors").html("");
    $(".success").html("");
    var data = {
      "action": "test"
    };
    data = $(this).serialize() + "&" + $.param(data);
    $.ajax({
      type: "POST",
      dataType: "json",
      url: "jsonpost.php", //Relative or absolute path to response.php file
      data: data,
      success: function(data) {
        if(data["success"]=="yes") {
          $(".success").html("Message Sent!");
          $(".formContainer").html("" + data["json"] + "");
        } else {
          $(".errors").html("" + data["errors"] + "");
        }
      }
    });
    return false;
  });
});
</script>

这是 php:

<?php
  header('Content-Type: application/json');
  require "../database/db.php";

  if (is_ajax()) {
    if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
      $action = $_POST["action"];
      switch($action) { //Switch case for value of action
        case "test": test_function(); break;
      }
    }
  }

  //Function to check if the request is an AJAX request
  function is_ajax() {
    return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
  }

  function test_function(){
    $return = $_POST; //to reference post

    $phone=$return[phone];
    $yphone=$return[yphone];
    $alert=$return[alert];

    function generateRandomString($length) {
      $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
      $randomString = '';
      for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
      }
      return $randomString;
    }
    $confirmCode=generateRandomString(6);

    //validate sender phone number
    if(empty($phone)){ 
      $c="0"; $empty="<li>Please enter their phone number!</li>"; 
    }

    //see if content is 140 characters or less
    if(strlen($content)>140){ 
      $c="0"; $lerror="<li>Your message must be 140 characters or less in length!</li>"; 
    }

    /* IP Address Info */
    $ip=$_SERVER["REMOTE_ADDR"];  //get sender IP address
    $ip=hash('sha256', $ip);  //hash IP address
    /* END IP Info */

    $etime=time()-18000;  //5 hours ago from current time
    $time=time(); //current time

    /*This makes the code fail */
    $result = mysqli_query($con,"SELECT * FROM messages WHERE ip='$ip' AND phone='$phone' AND time BETWEEN $etime AND $time");  //check if ip has sent more than 5 messages to phone number in less than 5 hrs.
    $totaltexts=mysqli_num_rows($result);
    if($totaltexts>4){ 
      $c="0"; $exceedmessage="<li>You have sent $phone the limit of 5 messages per 5 hours. Please try again later.</li>"; 
    }
    /* ------------------------- */

    if($c=="0"){
      $return["success"]="no";
      $return["errors"]="$empty $phoneerror $hooderror $yphoneerror $lerror $exceedmessage $exceedmessagea $exceedmessage2";
    } else {
      $return["success"]="yes";
    }

    $return["json"] = json_encode($return);
    echo json_encode($return);
  }
?>

最佳答案

我没有看到您在任何地方设置连接 $con。连接建立到数据库的连接。一旦你有了它,你就可以查询它。

您应该具有如下所示的内容(显然已替换了正确的值):

$con = mysqli_connect("myhost","myuser","mypassw","mydb") or die("Error " . mysqli_error($link)); 

关于php - 使用 mysql 查询时 JSON/PHP 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25964363/

相关文章:

php - 配置中的 ZF2 Doctrine2 setFilterSchemaAssetsExpression 设置

javascript - 为什么拖放 Js 会破坏 php 文件的上传过程?

sql - 分析表,优化表,多久一次?

mysql - 使用 UNION 处理重复结果

javascript - 如何在 html <a> 标签中设置 href

如果使用特定浏览器不起作用,PHP if else 语句会打开一个模式?

jquery - 如何有条件地执行 jquery 验证?

javascript - 将所有图像路径推送到整个网站的数组中

javascript - 从字符串中删除每个字符,除了它们之间的数字和字符

mysql - 如何使用 JOINED 表和 ORDER BY 和 OFFSET 改进 MySQL 查询