重点只有一个:php如何获取ajax函数传来的data值
$sql="INSERT INTO users (username, psw) VALUES('qiaoliting','123456')";
网上搜的是这样的,但有问题:
$sql="INSERT INTO users (username, psw) VALUES($_POST['username'],$_POST['psw'])";
表单:
<form method="post" action="localhost/db3.php">
<ul id="list">
<li>注册信息</li>
<li><label>用户名:</label><input type="text" id="username" name="username"/></li>
<li><label>密码:</label><input type="password" id="psw" name="psw"/></li>
<li><label>注册:</label><input type="button" id="submit" name="submit" value="注册"/></li>
</ul>
</form>
php文件:
<?php
$con = mysql_connect("localhost","test","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test", $con);
$sql="INSERT INTO users (username, psw) VALUES('qiaoliting','123456')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
js:(有jQuery文件)
var ousername = $('#username').val();
var opsw = $('#psw').val();
var dataString = 'username='+ousername+'&psw='+opsw;
$('#submit').click(
function(){
$('#txtHint').html(oajax.responseText);
}
)
var oajax = $.ajax({
type:"POST",
url:'db3.php',
data:dataString,
success:function(msg){
}
}) 展开
$sql="INSERT INTO users (username, psw) VALUES($_POST['username'],$_POST['psw'])";
当然会发生PHP的解析错误。
在php里,把$_POST['username']这种东西放进双引号字符串里,如"hi, $_POST['name']",无法被识别。常见的是"hi, $name",这样可以。
要想实现把$_POST数组中的值插入SQL语句有多种方法。
1.PHP的字符串串接操作符即“点”号(注意:sql中字符串要加引号)
$sql = "INSERT INTO users (username, psw) VALUES('".$_POST['username']."','".$_POST['psw']."')";
2.
$sql = "INSERT INTO users (username, psw) VALUES('{$_POST['username']}','{$_POST['psw']}')";
3.prepared statement。较复杂但是安全。
4.字符串格式化函数sprintf
$sql = sprintf("INSERT INTO users (username, psw) VALUES('%s','%s')", $_POST['username'], $_POST['psw']);
提醒:直接向sql语句中插入$_POST数组中的这些值而不经过转义会让网页存在极严重的SQL注入漏洞!解决方法:传统方法是用mysql_real_escape_string,现代方法是用prepared statement。
不懂请追问,满意请采纳。
补充,你的前端似乎还有问题。dataString 里直接插入ousername和opsw可能有问题。可能应该先经过url转义。我记得jquery的ajax可以直接post一个json字典,这样应该更好。
1、2、4方法:数据库里显示的都是undefined。
我没仔细看代码,没想到前端post就有问题。至少应该在照搬代码之前学习一下js和jquery的基本知识。
把前端改成这样,后端还是照我说的,1、2、4方法我都已经测试成功。
<form method="post" action="localhost/db3.php">
<ul id="list">
<li>注册信息</li>
<li><label>用户名:</label><input type="text" id="username" name="username"/></li>
<li><label>密码:</label><input type="password" id="psw" name="psw"/></li>
<li><label>注册:</label><input type="button" id="submit" name="submit" value="注册"/></li>
</ul>
</form>
<script>
$('#submit').click(function(){
var oajax = $.ajax({
type: "POST",
url: 'db3.php',
data: {
username: $('#username').val(),
psw: $('#psw').val()
},
success: function(msg){}
})
$('#txtHint').html(oajax.responseText);
});
</script>