猿问

javascript ajax 不发送字母字符到 php

在我的 javascript ajax 代码中,我将一些数据发送到另一个 php 文件,以便将数据记录到 mysql 数据库。当我只使用数字数据时,它会将所有数据记录到 mysql(像这样)


var myKeyVals = { pays: '123', order_id :'555' } 


var saveData = $.ajax({


  type: 'POST',

  url: "<?=$base_url?>pay/Paypal2.php",

  data: myKeyVals,

  dataType: "text",

  success: function(resultData)

  {

      alert('Transaction completed by ' + details.payer.name.given_name+'--'+data.orderID)

  }

}

但是当我在数据中使用字母字符时,ajax 脚本不会像这样发送数据


 var myKeyVals = { pays: 'abc784', order_id :'ab45c' } 


 var saveData = $.ajax({


  type: 'POST',

  url: "<?=$base_url?>pay/Paypal2.php",

  data: myKeyVals,

  dataType: "text",

  success: function(resultData)

  {

      alert('Transaction completed by ' + details.payer.name.given_name+'--'+data.orderID)

  }

}

我的录音机页面 php 代码是这样的


      $x=$_POST['pays'];

      $y=$_POST['order_id'];


      $sql = "INSERT INTO table(pays, order_id) VALUES ($x, $y)";

      if ($conn->query($sql) === TRUE) {

        echo "New record created successfully";

      } 

      else {

          echo "Error: " . $sql . "<br>" . $conn->error;

      }

      $conn->close();


冉冉说
浏览 158回答 1
1回答

慕运维8079593

如果你想防止一些 SQL 注入并解决你的问题,只需使用参数$stmt = $conn->prepare("INSERT INTO table(pays, order_id) VALUES (?, ?)");if(!$stmt) die('we have had some problem here');$stmt->bindparam('s', $x); //replaces first ?$stmt->bindparam('s', $y); //replaces second ?$stmt->execute();您还可以应用一些好的做法,例如,如果 $y 是数字$y=$_POST['order_id'];if( !is_numeric($y) ) die('$y must be a numeric value');或者如果 $y 是仅由字母数字字符形成的哈希,您也可以检查它if( !preg_match("/[^a-z0-9]+$/i",$y) ) die('$y has other characters other than a-z0-9');
随时随地看视频慕课网APP
我要回答