【发布时间】:2011-07-19 12:47:52
【问题描述】:
抱歉标题不好,但我不知道如何命名。我的问题是,每当我从选择框中传递一个值时,我都会触发此 jquery 事件以检查复选框。基本上我会回显 $res[];在 selectedgr.php 中。我需要使用json吗?我该怎么做?
主页:
$("#group_name").change(function(){
var groupname = $("#group_name").val();
var selectedGroup = 'gr_name='+ groupname;
$.post("selectedgr.php", {data: selectedGroup}, function(data){
$.each(data, function(){
$("#" + this).attr("checked","checked");
});
},"json");
});
PHP (selectedgr.php):
<?php
include_once '../include/lib.php';
$gr_name=mysql_real_escape_string($_POST['gr_name']);
$sqlgr = "SELECT * FROM PRIVILLAGE WHERE MAINGR_ID=".$gr_name;
$resultgr = sql($sqlgr);
while($rowgr = mysql_fetch_array($resultgr)){
$res[] = $rowgr['ACT_ID'];
}
echo $res[];
?>
【问题讨论】:
-
你的代码存在SQL injection漏洞
-
在哪里??请指导我>
-
@Eric 你需要使用
mysql_real_escape_string()转义$gr_name如果它是一个字符串(那么你需要添加引号)或者如果它是一个数字ID,检查它是否是一个使用intval()的数字。 -
`$.each(data, function(){ $("#" + this).attr("checked","checked"); });`的目的是什么跨度>
-
$sqlgr = "SELECT * FROM PRIVILLAGE WHERE MAINGR_ID=".$gr_name;在这里。您应该使用 sql 占位符(绑定变量)。像这样: $sql = "SELECT * FROM PRIVILLAGE WHERE MAINGR_ID=:n"; $stmt = $pdo->prepare($sql); // 将 php 变量绑定到语句中的占位符 $stmt->bindParam(':n', $gr_name); $stmt->执行(); //对不起,我不是 php 大师 ;) 但你有一个想法......
标签: php jquery arrays json .post