我是 AJAX 的新手,目前正在使用 QR 掃描儀。我在 MySQL 資料庫中插入資料時遇到問題。我嘗試搜索幾個小時來了解如何使用 AJAX 插入資料,但似乎沒有任何效果。這是系統正常作業需要做的最后一步。有人可以幫我嗎?先感謝您!
這是場景:
- 掃描二維碼
- 在用戶表中搜索二維碼
- 用戶 ID 將被插入到日志表中
function onScanSuccess(qrCodeMessage) {
if (qrCodeMessage !== lastResult) {
countResults;
lastResult = qrCodeMessage;
$.ajax({
url:'db_scan.php',
method:'POST',
data:{pcode:qrCodeMessage},
error:err=>{
console.log(err)
alert_toast('An Error Occured.');
},
success:function(resp){
console.log('Success?');
if(resp == 1){
console.log('Resp=1');
swal({
title: 'Welcome',
text: 'Enjoy your visit...',
icon: 'success',
timer: 2000,
buttons: false,
})
}else if(resp ==3){
console.log('Resp=3');
swal({
title: 'Code is not Valid',
text: 'Scan a register QR Code',
icon: 'error',
timer: 2000,
buttons: false,
})
}else{
alert_toast('An Error Occured.');
}
}
})
}
}
var html5QrcodeScanner = new Html5QrcodeScanner(
"qr-reader", { fps: 10, qrbox: 250 });
html5QrcodeScanner.render(onScanSuccess);
db_scan.php
$pcode=$_POST['pcode'];
$u_id = "SELECT * FROM `users` WHERE qr='$pcode'";
$sql = "INSERT INTO logs set u_id = '$u_id";
$result = $conn->query($sql);
if ($result == TRUE) {
echo "Record has been added!";
} else {
echo "Error:" . $sql . "<br>" . $conn->error;
}
參考:HTML5 二維碼閱讀器
解決方案:
我使用了Harvi Dent提供的解決方案,似乎我忘記輸入<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>我的代碼,這就是它無法真正作業的原因。
uj5u.com熱心網友回復:
您的查詢太容易受到sql 注入的影響,永遠不要使用mysqli 和非引數化查詢。
相反,使用引數化的pdo查詢來處理基礎
你的 php 代碼應該是這樣的
// change for connect to db
$pdo = new PDO('mysql:host=' . DB_HOSTNAME . ';dbname=' . DB_DATABASE, DB_USERNAME, DB_PASSWORD);
$pcode = $_POST['pcode'];
// start. get id from db
$u_id_sql = "SELECT * FROM `users` WHERE qr=:qr";
$stmt = $pdo->prepare($u_id_sql);
$stmt->execute(['qr' => $pcode]);
$user_row = $stmt->fetch(PDO::FETCH_ASSOC); // her array with id
// end. get id from db
// start insert
$sql = "INSERT INTO `logs` set u_id = :user_qr_id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['user_qr_id' => $user_row['id']]);
$stmt->fetch();
// end insert
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/441728.html
