我的代码没有使用select

时间:2014-04-11 08:44:19

标签: javascript php mysql ajax mysqli

我知道有人问过这个问题,但在浏览了这个网站和其他人的教程之后我找不到解决方案。我有DELETE,SELECT(*)和INSERT语句使用几乎相同的语法,但由于某种原因,这将无法正常工作。我正在尝试从数据库返回用户创建的文件列表,这是我的Javascript和PHP:

Javascript:
$('#btnLoad').on('click', function(e) {
        e.preventDefault();
        var dataString ='emailHolder=' + email;
        $.ajax({
            type: "POST",
            url: "process_load.php",
            data: dataString,
            dataType:'json',
            success: function(data){
            alert(data);
        },
        });

    });

和process_load.php文件:

<?php
include_once 'db_connect.php';
include_once 'psl-config.php';



        $email = $_POST['emailHolder'];
        $query="SELECT filename from maps WHERE email=?";
        $email = filter_var($email, FILTER_VALIDATE_EMAIL);


    if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_param('s', $email);
    /* execute statement */
        $stmt->execute();

    /* bind result variables */
        $stmt->bind_result($email);

    /* fetch values */
        while ($stmt->fetch()) {
            printf ("%s\n", $email);
        }

    /* close statement */
    $stmt->close();
}

    ?>

我感谢你能给我的任何帮助。

编辑:对不起,我绑定了参数,但在试图抛出厨房水槽问题时意外删除了它。谢谢大家的帮助!

2 个答案:

答案 0 :(得分:0)

您错过了bind_param()。其次,Javascript期待JSON,但您只是输出由新行分隔的原始电子邮件。改为:

$output = array(); // build an array that can be json encoded

if ($stmt = $mysqli->prepare($query)) {

    $stmt->bind_param('s', $email); // bind the param in the WHERE clause

    /* execute statement */
        $stmt->execute();

    /* bind result variables */
        $stmt->bind_result($email);

    /* fetch values */
        while ($stmt->fetch()) {
            $output[] = $email; // append to the array
        }

    /* close statement */
    $stmt->close();
}

echo json_encode($output); // output json

现在您可以在Javascript端获取电子邮件数组:

   $.ajax({
            type: "POST",
            url: "process_load.php",
            data: dataString,
            dataType:'json',
            success: function(data){
                for(var i=0; i<data.length; i++){
                    console.log( data[i] ); // logs each email
                }
        },
    });

答案 1 :(得分:0)

你的主要问题是你正试图同时坐在两把椅子上。或者甚至更多的椅子。

没有工作的服务器端代码,甚至不知道如何编写它,你已经在尝试编写JS和AJAX。结果,你有一堆相当随机的代码串在一起,不知道为什么它不起作用。

这种方法不起作用。

  • 首先,您必须学习如何使用mysqli。总的来说。
  • 只有在那之后,您才可以尝试编写服务器端代码。
  • 最后,只有在让服务器端部分使用模拟数据之后,才可以从JS开始。