【发布时间】:2010-10-25 02:40:56
【问题描述】:
我想使用 jQuery 和 JSON 将数据从 MySQL 数据库加载到 PHP 页面。当用户从选择框中选择姓名时,它会将人的数据加载到文本字段中。
这是我的 HTML 代码(选择)
<select name='name' id='name'>
<option value='1'>John</option>
<option value='2'>Marco</option>
<option value='3'>Charles</option>
</select>
我想用人员数据填充的文本字段:
<input type='text' name='firstname' value='' id='firstname'/>
<input type='text' name='phonenum' value='' id='phonenum'/>
getpersonData.php
<?php
include('dbconfig.php');
$id = $_POST['id'];
$query = "select * from person where ID='$id'";
$result = mysql_query($query);
$data = mysql_fetch_array($result);
echo json_encode($data);
?>
Ajax 调用:
$.ajax({
type: "POST",
async : false,
url: 'http://test.com/getpersonData.php',
dataType: 'json',
data : {
id : $("#id").val(),
},
success : function(data) {
//What to insert here?
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest + " : " + textStatus + " : " + errorThrown);
}
});
success 函数应该使用什么代码?
【问题讨论】:
-
不要将任何用户数据直接插入代码,就像将
$_POST['id']插入select * from person where ID='$id'一样。这使您的代码对SQL injection 开放。从过时的mysql驱动切换到PDO和prepared statements。 -
另外,你 shouldn't use
SELECT *在这里。结果行应作为关联数组获取,而不是作为关联数组和数值数组的组合。两者都做只会导致更长的响应消息。 -
感谢您的建议。我现在就读:)
-
@outis 虽然“SELECT *”并不好,但我认为您的意思是“不要使用 mysql_fetch_array”。它应该是
mysql_fetch_array($result, MYSQL_ASSOC)或只是mysql_fetch_assoc($result) -
如果您需要 PDO 教程,请尝试“Writing MySQL Scripts with PHP and PDO”。但是,不要让这阻止您搜索其他人。