使用Javascript、PHP和AJAX输出SQL查询
我正在尝试创建一个表单,它在提交时将简单SQL查询的输出返回到页面上,而无需重新加载(AJAX)。我可以得到简单的输出,但是当我使用PHP进行SQL查询时,什么都不会返回。任何帮助都将不胜感激。我也找不到任何方法来检查我的Javascript/Php有什么问题 对于web开发来说,这是一个非常新的概念,如果这是一件小事,我深表歉意。以前找到的所有解决方案都不起作用 我的代码 a1.php使用Javascript、PHP和AJAX输出SQL查询,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我正在尝试创建一个表单,它在提交时将简单SQL查询的输出返回到页面上,而无需重新加载(AJAX)。我可以得到简单的输出,但是当我使用PHP进行SQL查询时,什么都不会返回。任何帮助都将不胜感激。我也找不到任何方法来检查我的Javascript/Php有什么问题 对于web开发来说,这是一个非常新的概念,如果这是一件小事,我深表歉意。以前找到的所有解决方案都不起作用 我的代码 a1.php <script src='../js/scriptget.js'></script>
<script src='../js/scriptget.js'></script>
<form>
<fieldset>
<legend>Login</legend>
Username:<br>
<input type="text" name="myusername" placeholder="Username">
<br>
Password:<br>
<input type="text" name="mypassword" placeholder="Password">
<br><br>
<input type="submit" value="Submit" onclick='return getAccount();'>
</fieldset>
</form>
submitinjection.php
<?php
$host="localhost"; //Host Name
$username="root"; // MySql Username
$password="root"; // Mysql Password
$db_name="Honours2"; //Database Name
$tbl_name="Users"; // Table Name
// Connect to server and select database
$conn = mysql_connect("$host", "$username", "$password") or die("Cannot Connect");
mysql_select_db("$db_name") or die("Cannot select DB");
// User and Password sent from form
$myusername = $_GET['myusername'];
$mypassword = $_GET['mypassword'];
/**
Protect MYSQL INJECTION
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
*/
$sql = "SELECT *
FROM $tbl_name
WHERE username = '$myusername'
AND password = '$mypassword'
";
$result=mysql_query($sql);
/* echo $sql; */
if (!$result){
die('Invalid Query: ' . mysql_error() . $sql);
}
if ($result){
echo($sql);
}
/* var_dump($result); */
while ($row = mysql_fetch_assoc($result)){
echo $row['username'];
echo ": ";
echo $row['balance'];
}
mysql_free_result($result);
$conn->close();
?>
您需要处理ajax调用的结果,例如success
函数。您还可以使用类似于.done()
或$的方法。当()。然后()
时,请查看jQuery手册
使用success
函数的简单示例:
var phpOut = $.ajax({
type: 'GET',
url: 'submitInjection.php',
data: 'myusername=billsmith&mypassword=password',
success: function(data_returned) {
alert(data_returned);
// or
$('#output2').html(data_returned);
}
});
一些补充说明:
- 不要使用
GET
向服务器发送敏感信息,而是使用POST
李>
- 不要存储纯文本密码,对它们进行加密和散列李>
- 不推荐使用
mysql.*
函数,您应该切换到mysqli.*
或PDO,在那里您可以使用准备好的语句来避免sql注入,从而避免不必要的转义
您必须向$.ajax()
调用添加一个success
回调函数。该回调函数应该调用“drawOutput”函数,并将其得到的响应作为参数。大概是这样的:
success: function (data) {
drawOutput(data);
}
我真的希望你没有用明文输入真正的密码…在ajax调用中添加一个success
函数/处理程序来处理结果。在PHP文件中,你可以echo
你想要的结果,然后在JS AJAX中,你使用一个success
函数和一个变量作为结果。@ArtOfCode不,这只是为了测试目的,别担心,哈哈。@jeroen我对这个有点陌生,你能告诉我怎么做吗?我现在正在尝试,有没有办法检查哪里出了问题?一些错误的错误日志kind@Mejaniks浏览器开发工具的javascript控制台是一个很好的起点。我目前正在运行:函数getAccount(){var data_returned;console.log('hello');var phpOut=$.ajax({type:'GET',url:'submitInjection.php',data:'myusername=billsmith&mypassword=password',success:function(data_返回){drawOutput(data_返回);}}没有用,我甚至没有在控制台上得到任何输出,有没有什么特别明显的东西我遗漏了?@Mejaniks如果你有一个控制台.log
调用,你得到了输出。按F12。什么浏览器?@jeroen Haha抱歉,我刚在测试的时候忘了把它从PHp中拿出来,谢谢大家
success: function (data) {
drawOutput(data);
}