gpt4 book ai didi

PHP MYSQL 查询使用 Ajax 数据返回 null,但不返回硬编码数据

转载 作者:行者123 更新时间:2023-11-29 20:56:02 25 4
gpt4 key购买 nike

我有以下 PHP 脚本:

include("dbconnecti.php");
$cropId = $_POST['cropId'];
//echo 'the id is: ' . $cropId;

$query = "SELECT W.*,FI.*, PN.*, CONCAT(FI.fName, ' ', FI.lname) AS farmer
FROM `wantToSell` AS W, `produceName` AS PN, `farmerInfo` AS FI
WHERE W.farmerId = FI.farmerId AND W.produceId = PN.produceId AND W.produceId = '" . $cropId ."'";

$result = $dbconnect->query($query);
if($result){
while($row = $result->fetch_assoc()){
$allRows[] = $row;
}
echo json_encode($allRows);
}
else{
echo json_encode($dbconnect -> error);
die;
}
}

和 JQuery 脚本:

function cropDescrip(clicked_id) {
$.ajax({
url : "../php/cropdescrip.php",
type : "POST",
dataType : 'JSON',
cache : false,
data : {cropId : clicked_id},
success : function (data) {
console.log(data);
} //end success
}); //end ajax
} //end cropDescrip

如果我将 $_POST[cropId] 替换为实际值(例如 tmt001),查询语句将返回有效结果。但是,当我通过 jQuery Ajax 调用将值传递给 $_POST[cropId] 时,SQL 查询返回一个空集。

echo 语句显示该值正在传递给 PHP 脚本。

发生了什么情况,如何解决?

最佳答案

也许最好更改您的代码以使用准备好的语句。它可能会解决您的问题并消除 sql 注入(inject)风险。像这样的事情:

$stmt = $mysqli->prepare("SELECT W.*,FI.*, PN.*, 
CONCAT(FI.fName, ' ', FI.lname) AS farmer
FROM `wantToSell` AS W, `produceName` AS PN, `farmerInfo` AS FI
WHERE W.farmerId = FI.farmerId AND W.produceId = PN.produceId AND W.produceId =?";

/* assuming cropId is a string given your quotes in the original */
$stmt->bind_param("s", $cropId);

/* execute query */
$stmt->execute();

$result = $stmt->get_result();

关于PHP MYSQL 查询使用 Ajax 数据返回 null,但不返回硬编码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com