【问题标题】:My code not working with select我的代码不适用于选择
【发布时间】:2014-05-25 07:38:24
【问题描述】:

我知道有人问过这个问题,但是在查看了整个网站和其他人的教程后,我找不到解决方案。我有 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();
}

    ?>

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

编辑:对不起,我正在绑定参数,但在尝试将厨房水槽扔到问题上时意外删除了它。感谢大家的帮助!

【问题讨论】:

  • 您收到的错误信息是什么?
  • 你已经给出了数据类型json,所以你必须对你的输出进行json_encode
  • 你有一个?在您的查询中,但我看不到您将值绑定到它的位置
  • 您应该绑定到电子邮件的值在哪里?
  • 对不起,我在清理代码时忘记将其添加回来。当我尝试不同的东西时,我一定是不小心把它移除了,这显然造成了更多的问题。

标签: javascript php mysql ajax mysqli


【解决方案1】:

您缺少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 端获取 email 数组了:

   $.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
                }
        },
    });

【讨论】:

    【解决方案2】:

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

    没有可用的服务器端代码,甚至不知道如何编写它,您已经在尝试编写 JS 和 AJAX。结果,你有一堆非常随机的代码行拼凑在一起,不知道为什么它不起作用。

    这样不行。

    • 首先,您必须学习如何使用 mysqli。一般。
    • 只有在此之后您才能尝试编写服务器端代码。
    • 最后,只有在您的服务器端部分使用模拟数据后,您才能从 JS 开始。

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 2010-10-19
      • 2015-12-10
      • 2016-01-01
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      相关资源
      最近更新 更多