gpt4 book ai didi

php - 使用 Ajax 数据逗号分隔的 SQL 查询来搜索表

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

我正在尝试通过ajax将一串数据从以逗号分隔的字段传递到执行简单搜索的php文件。

例如,我传递的数据是:var dataString = '1,2,3,4' as post。我现在尝试获取 PHP 文件中的值并对数据库进行查询,但 dataString post 值在进入 PHP 文件后为空。谁能解释一下我错在哪里?

此外,是否有更好的方法来生成 SQL 查询?

代码:

var dataString = "1,2,3,4";

$.ajax({ /* THEN THE AJAX CALL */
type: "POST", /* TYPE OF METHOD TO USE TO PASS THE DATA */
url: "includes/search.php", /* PAGE WHERE WE WILL PASS THE DATA */
data: dataString, /* THE DATA WE WILL BE PASSING */
success: function(result){ /* GET THE TO BE RETURNED DATA */
alert(result);
}
});

**PHP **

if(isset($_POST['dat'])){
$dat = $_POST['img'];
$types = explode(",", $dat);
$size = sizeof($types);

$loc = '30';

$ini = $types[0];

$query = "SELECT `location_images`.`image_link` FROM `location_images` INNER JOIN `image_type` ON `location_images`.`id` = `image_type`.`image_id` WHERE `location_images`.`location_id` = :loc AND (`image_type`.`dt_id` = '".$ini ."'";

for($i=1; $i<$size; $i++){
$query .= " OR `image_type`.`dt_id` = '".$types[$i]."'";
}

$query .= ")";
echo $query; die;
}

最佳答案

您需要为数据参数指定一个对象到$.ajax,如果您指定一个字符串(正如您所做的那样),则假定它是一个查询字符串。因此,将您的 AJAX 调用更改为

  $.ajax({ /* THEN THE AJAX CALL */
type: "POST", /* TYPE OF METHOD TO USE TO PASS THE DATA */
url: "includes/search.php", /* PAGE WHERE WE WILL PASS THE DATA */
data: { dat: dataString }, /* THE DATA WE WILL BE PASSING */
success: function(result){ /* GET THE TO BE RETURNED DATA */
alert(result);
}
});

此外,在 PHP 中,紧接在 if(isset($_POST['dat'])){ 之后,您需要更改

$dat = $_POST['img'];

$dat = $_POST['dat'];

在生成 SQL 查询方面,您当前的方法使您容易受到 SQL 注入(inject)的影响。我会做这样的事情:

$query = "SELECT `location_images`.`image_link` 
FROM `location_images`
INNER JOIN `image_type` ON `location_images`.`id` = `image_type`.`image_id`
WHERE `location_images`.`location_id` = :loc AND
(`image_type`.`dt_id` = :type0";
for ($i = 1; $i < $size; $i++) {
$query .= " OR image_type`.`dt_id` = :type$i";
}
$query .= ")";

然后您可以在绑定(bind) :loc 的同时绑定(bind)类型值。

关于php - 使用 Ajax 数据逗号分隔的 SQL 查询来搜索表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52676743/

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