使用 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"].')';
大家好,似乎无法在 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"].')';