Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript、PHP和AJAX输出SQL查询_Javascript_Php_Jquery_Mysql_Ajax - Fatal编程技术网

使用Javascript、PHP和AJAX输出SQL查询

使用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>

我正在尝试创建一个表单,它在提交时将简单SQL查询的输出返回到页面上,而无需重新加载(AJAX)。我可以得到简单的输出,但是当我使用PHP进行SQL查询时,什么都不会返回。任何帮助都将不胜感激。我也找不到任何方法来检查我的Javascript/Php有什么问题

对于web开发来说,这是一个非常新的概念,如果这是一件小事,我深表歉意。以前找到的所有解决方案都不起作用

我的代码

a1.php

<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);
}