我想基于ajax调用获取数据
这是我获取ID的代码
<h3> <a class='click' data-id='<?=$rows["id"];?>'><?=$rows['title'];?></a</h3>
这是我的jquery代码
$(document).ready(function() {
$(".click").on('click',function() {
var id= $(this).attr("data-id");
alert(id);
$.ajax({
type: "POST",
url: "getevents.php",
data: {id:id},
dataType: "html",
success: function(response){
console.log(response);
}
});
})})
</script>
getevents.php
<?
if(isset($_POST['id'])){
echo $_POST['id'] ;
}
$singleevent = mysqli_query($link, 'SELECT * FROM `events` WHERE `id`=."'$id'" ') or die('error');
while($row= mysqli_fetch_array($link , $singleevent)){
print_r($row);
}
?>
$ _ POST [&#39; id&#39;]; 会在控制台中打印,但不会在响应中打印。我在while循环中尝试了echo和print_r(),但没有任何响应。
请帮我解决这个问题
答案 0 :(得分:1)
PHP中存在一些问题。首先,您忘记重新分配变量,然后在查询中不正确地连接变量。如果未设置id,您可能也不希望查询运行,因此您需要重新排列括号:
<?
if(isset($_POST['id'])){
$id = $_POST['id'] ; // set the variable for the query
$singleevent = mysqli_query($link, "SELECT * FROM `events` WHERE `id` = $id") or die('error');
$row= mysqli_fetch_array($singleevent, MYSQLI_ASSOC);
print_r($row);
}
?>
我假设您的$link
是与您的数据库良好且正确的连接。假设id选择单行数据,您也不需要while循环。您还需要使用查询结果和MYSQLI_ASSOC
这样正确地获取数组:
$row= mysqli_fetch_array($singleevent, MYSQLI_ASSOC);
我已将其包含在代码块中。
如果未启用PHP短标记,则需要将<?
更改为<?php
Little Bobby说 your script is at risk for SQL Injection Attacks. 了解prepared的MySQLi语句。即使escaping the string也不安全!