使用 PHP 将 MySQL 行解析为 JavaScript

Parsing MySQL rows to JavaScript with PHP

大家好,似乎无法在 JavaScript 中使用 MySQL 行值。我已经尝试了各种引号和双引号组合。

$sql = "SELECT desk_id, desk_x, desk_y FROM desks";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo '<script type="text/javascript">';
        echo 'new Desk('$row["desk_id"]', '$row["desk_x"]', '$row["desk_y"]')';
        echo '</script>';
    }
} 

我收到此错误:

Parse error: syntax error, unexpected '$row' (T_VARIABLE), expecting ',' or ';'

感谢您的帮助。

编辑: 感谢大家的回答。

这个有效:

while($row = $result->fetch_assoc()) {  
    echo '<script type="text/javascript">';
    echo "new Desk('{$row["desk_id"]}', '{$row["desk_x"]}', '{$row["desk_y"]}')"; 
    echo '</script>';            
}

当我尝试将打开和关闭标签放在 while 循环之外时,出现错误:

SyntaxError: Unexpected token new

为了防止需要转义的字符;在 PHP 中,字符串连接是使用 .(句点)

完成的
echo 'new Desk('.$row["desk_id"].', '.$row["desk_x"].', '.$row["desk_y"].')';

或者

echo "new Desk('{$row["desk_id"]}', '{$row["desk_x"]}', '{$row["desk_y"]}')"; 

这不是处理 php 和 javascript 的最佳方法.. 调用 ajax 会好得多.

如果您想将 php 变量放入字符串中,请尝试这样:

echo 'new Desk('.$row["desk_id"].', '.$row["desk_x"].', '.$row["desk_y"].')';

1st : 将您的脚本标记移到 while 循环之外

2nd : 使用 escape 字符 (\) 或使用 double 这样的引号

if ($result->num_rows > 0) {
    echo '<script type="text/javascript">';
    while($row = $result->fetch_assoc()) {

        echo "new Desk('{$row["desk_id"]}', '{$row["desk_x"]}', '{$row["desk_y"]}')";

    }
     echo '</script>';
} 

不鼓励将 javascript 与 PHP 混淆。您可以使用 AJAX 调用。

根据你的问题,如果你想引用 javascript 输入参数,你必须用反斜杠正确地转义它们:

echo 'new Desk(\''.$row["desk_id"].'\', \''.$row["desk_x"].'\', \''.$row["desk_y"].'\')';

但是如果你确定你的参数是数字,你不需要将它们引用:

echo 'new Desk('.$row["desk_id"].', '.$row["desk_x"].', '.$row["desk_y"].')';