我知道有人问过这个问题,但在浏览了这个网站和其他人的教程之后我找不到解决方案。我有DELETE,SELECT(*)和INSERT语句使用几乎相同的语法,但由于某种原因,这将无法正常工作。我正在尝试从数据库返回用户创建的文件列表,这是我的Javascript和PHP:
Javascript:
$('#btnLoad').on('click', function(e) {
e.preventDefault();
var dataString ='emailHolder=' + email;
$.ajax({
type: "POST",
url: "process_load.php",
data: dataString,
dataType:'json',
success: function(data){
alert(data);
},
});
});
和process_load.php文件:
<?php
include_once 'db_connect.php';
include_once 'psl-config.php';
$email = $_POST['emailHolder'];
$query="SELECT filename from maps WHERE email=?";
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_param('s', $email);
/* execute statement */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($email);
/* fetch values */
while ($stmt->fetch()) {
printf ("%s\n", $email);
}
/* close statement */
$stmt->close();
}
?>
我感谢你能给我的任何帮助。
编辑:对不起,我绑定了参数,但在试图抛出厨房水槽问题时意外删除了它。谢谢大家的帮助!答案 0 :(得分:0)
您错过了bind_param()
。其次,Javascript期待JSON,但您只是输出由新行分隔的原始电子邮件。改为:
$output = array(); // build an array that can be json encoded
if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_param('s', $email); // bind the param in the WHERE clause
/* execute statement */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($email);
/* fetch values */
while ($stmt->fetch()) {
$output[] = $email; // append to the array
}
/* close statement */
$stmt->close();
}
echo json_encode($output); // output json
现在您可以在Javascript端获取电子邮件数组:
$.ajax({
type: "POST",
url: "process_load.php",
data: dataString,
dataType:'json',
success: function(data){
for(var i=0; i<data.length; i++){
console.log( data[i] ); // logs each email
}
},
});
答案 1 :(得分:0)
你的主要问题是你正试图同时坐在两把椅子上。或者甚至更多的椅子。
没有工作的服务器端代码,甚至不知道如何编写它,你已经在尝试编写JS和AJAX。结果,你有一堆相当随机的代码串在一起,不知道为什么它不起作用。