javascript - 通过 PHP 将 mysql 表值传递给 Javascript

标签 javascript php html mysql

我试图获取 MYSQL 表的所有行,并最终将它们放入交互式 HTML 表中。我目前使用 $.post 函数将值插入表中没有问题,我只是无法返回它们,至少不能返回全部。

这是我的 JS 代码:

function load() {   

            $.post(
            "Returnsmedb.php",
            function (response) {
                var firstname = response.fname;
                var lastname = response.lname;
                var username = response.uname;
                var email = response.email;
                var password = response.password;

                console.log(response);
            }, 'JSON'
        );  
    }

PHP:

<?php
header('Content-type: application/json');

$servername = "localhost";
$username = "SME";
$password = "mypass";
$db = "p3";

// Create connection
$conn =  new mysqli($servername, $username, $password, $db);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 


$sql = "SELECT * FROM pendingusers";
$result = $conn->query($sql);
$response = array();

if ($result->num_rows > 0) {

 while($row = $result->fetch_array()) {
    // $response[] = $row[];
    $response['fname'] = $row["fname"];
    $response['lname'] = $row["lname"];
    $response['uname'] = $row["uname"];
    $response['email'] = $row["email"];

}
    echo json_encode($response);
} else {
    echo "0 results";
}
$conn->close();
?>

我认为最简单的方法是将每一行存储在一个数组中,但我不确定。它当前返回我的 $response 数组,但所有值都是空,除了“email”,它具有正确的值,但它来 self 的数据库表的最后一行。此外,它只返回一行。

任何帮助/指导将不胜感激。

谢谢!

最佳答案

你的问题是在这个循环中:

 while($row = $result->fetch_array()) {
    // $response[] = $row[];
    $response['fname'] = $row["fname"];
    $response['lname'] = $row["lname"];
    $response['uname'] = $row["uname"];
    $response['email'] = $row["email"];    
}

您不断覆盖$response中的相同键,因此在循环结束时,只会找到最后一个数据库行中的值。你可以通过这样做来解决这个问题

 while($row = $result->fetch_array()) $response[] = $row;

但是,如果您要捕获所有结果,则无需循环遍历它们。只需使用 fetch_all您将立即获得完整的表格。

 $response = $result->fetch_all(MYSQLI_ASSOC)

作为旁注,我会非常小心地将所有未过滤的内容从数据库发送到浏览器,就像这样。至少考虑在查询中添加一个 LIMIT 子句,这样,如果您的表有数千行,则不会发送所有内容:

 $sql = "SELECT * FROM pendingusers LIMIT 50";

最后,明确您想要的列,这样当您的数据库将来获得新的敏感列时,您就不会泄漏不需要的信息

 $cols = 'fname, lname, uname, email';
 $sql = "SELECT $cols FROM pendingusers LIMIT 50";

关于javascript - 通过 PHP 将 mysql 表值传递给 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45266161/

相关文章:

javascript - Angular - 根据操作显示/隐藏表单

Javascript正则表达式用于从样式中删除高度/宽度

javascript - 在 JS/JQuery 中使用配置 PHP 文件

php - Session_set_save_handler 未设置

jquery - 迷你 jQuery 脚本使 div 消失而不是替换其内容

Javascript 将值添加到单选按钮以输入价格

javascript - 如何将链接变量连接到javascript?

PhpSpreadsheet 条件格式化单元格(填充)

javascript - 使用 Featherlight.js 禁用右键单击

html - 简单的 img 链接问题