在我的 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();
1 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
如果你想防止一些 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');
- 1 回答
- 0 关注
- 157 浏览
添加回答
举报
0/150
提交
取消