【问题标题】:JavaScript Arrays and MySQLJavaScript 数组和 MySQL
【发布时间】:2015-06-06 05:18:37
【问题描述】:

我正在尝试使用 PHP 连接到数据库,然后将从 MySQL 查询返回的所有值放入 JavaScript 字符串数组中。

这是我目前的代码。

JavaScript 代码:

var noDressing = document.getElementById("temp1").innerHTML;
var noDressingNew = noDressing.split(',');
alert(NoDressingNew);

出于调试目的,我正在提醒列表。

这是PHP代码(我知道它连接到数据库成功):

<div id="temp1" style="display: none;">
    <?php
        include "/home/pi/config.php";
        $toPrint = "";
        $connect = mysqli_connect("localhost", $name, $pass, "items");
        if(mysqli_connect_errno()){
            echo "<p>Failed to connect to products database!</p>";
        }
        $result = mysqli_query($connect, "SELECT * FROM products WHERE options=''");
        while($row = mysqli_fetch_array($result)){
            $id = $row['id'];
            $toPrint .= $id . ",";
        }
        echo rtrim($toPrint, ",");
    ?>
</div>

这是我的表在数据库中的样子:

ID | NAME | DESCRIPTION | PRICE | TYPE | OPTIONS

我想获取所有 OPTIONS 值为 ""(一个空字符串)的记录,然后将它们的 ID 放入一个列表中。

但是,当我运行此代码时,根本没有显示任何警报框。

谢谢,

【问题讨论】:

  • 你是如何执行你的 JavaScript 代码的?显示更多内容。
  • 你检查过控制台的JS错误吗?也许代码在 DOM 准备好之前就已经运行了?
  • HTML 数字输入发生变化时正在执行代码。
  • Chrome 上的 JavaScript 控制台显示:Uncaught ReferenceError: NoDressingNew is not defined
  • 好吧,你已经写了noDressingNew,然后是NoDressingNew。 :) JS 区分大小写。

标签: javascript php mysql arrays web


【解决方案1】:

将这些添加到数组中会更有意义,然后在数组上调用implode()

$toPrint = array();
while($row = mysqli_fetch_array($result)){
    $toPrint[] = $row['id'];
}
$toPrint = implode(',', $toPrint);

如果没有警告框,则 Javascript 错误很可能是导致该特定问题的原因,尽管这可能意味着您在链上更远的地方遇到了问题。首先按 F12 打开浏览器的开发人员工具,然后转到控制台并刷新页面。检查控制台中是否出现任何错误,并尝试更正这些错误。

尝试在使用 PHP 之前直接在数据库上运行您的 SQL,以确保您的 SQL 按预期工作。您可以为此使用任意数量的工具。为此,我想到了 PHPMyAdmin、HeidiSQL 或 SQLYog。检查那里是否存在任何错误。

如果您的 SQL 不存在任何内容,请使用 var_dump 将查询结果显示到网页(在执行此操作时删除“display: none;”)。确保您从 SQL 获得结果。在循环中尝试 var_dump 以检查循环本身是否获得了正确的值。

最后,您需要确保直接在表单上显示的任何内容都经过正确的 HTML 转义以避免Cross-site scripting attacks。您可以为此使用htmlspecialchars。像这样回显你的字符串:

echo htmlspecialchars($toPrint);

【讨论】:

  • 没关系,问题是拼写错误。不过感谢有关 htmlspecialchars 的提示。
【解决方案2】:

这是使用开源项目http://www.jinqJs.com的方法

var result = jinqJs().from($result).where('OPTIONS == ""').select('ID');

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2023-03-06
    • 2013-04-06
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    相关资源
    最近更新 更多