我有连接到 MySQL 数据库的 phppage.php:
<?php
$list = 'A,B,C';
$cxn = mysqli_connect("localhost", $username, $password, $database) or die("Didn't connect");
$query = "SELECT * FROM Questions3 WHERE 1 IN ($list) ORDER BY RAND() LIMIT 10";
$result = mysqli_query($cxn,$query) or die ("Didn't work");
while( $row = mysqli_fetch_assoc($result) )
{
echo "<div>";
echo $row['columnname'];
echo "</div>";
}
这会提取 10 个随机数据库条目,其中 A、B 或 C 列的值为“1”。
该页面本身运行良好。但我实际上需要使用 AJAX(我是新手)从另一个页面使用复选框来调用它。所以而不是
$list = 'A,B,C'
我需要
$list = "data1"
我的主页上的 jQuery 位置是:
$(document).ready(function(){
$("button").click(function(e){
e.preventDefault();
var data1 = 'A,B,C';
$.ajax({url:"phppage.php", type:"POST", data:data1, success:function(result){
$("#display").html(result);
}});
});
})
html 是:
<button>Press</button>
<div id="display">Data should show here</div>
(显然在这个简化版本中我忽略了复选框)。
但是,当我按下按钮时,显示“不起作用”。因此,我的 JQuery 中的“data1”不会转移为 PHP 中的 $list。
我的 AJAX 有什么问题:如何传输“data1”字符串?
最佳答案
问题在于您在 JavaScript 中发送数据的方式:
// data1 is a string
data:data1
data
键需要键值对,因此您必须执行以下操作:
data: {'mydata': data1}
然后您将在 $_POST['mydata']
中获得 php 中的字符串。
当您使用发布的值/用户输入时,您应该确保通过在输入变量上使用准备好的语句或 mysqli_real_escape_string()
来避免 SQL 注入(inject)。
还要注意,当你在mysql中使用IN
时,你想要使用的每个值都必须单独绑定(bind),当你使用准备好的语句时,你不能绑定(bind)范围。
最后,您要检查数字 1 还是有名为 1
的列?如果是后者,则需要用反引号引用:
SELECT * FROM Questions3 WHERE `1` IN (?,?,?) ORDER BY RAND() LIMIT 10
^^^ here
关于php - 我的 Ajax 没有将值传递到 php 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410420/