我有一个运行良好的JavaScript代码:
var lookup = {
"dog-black":{url:'images/dog-black.jpg'},
"dog-white":{url:'images/dog-white.jpg'},
"cat-black":{url:'images/cat-black.jpg'},
"cat-white":{url:'images/cat-white.jpg'}
};
我想使用PHP动态生成相同的代码,以便在数据库中创建相同的行,如下所示:
var lookup = {
<?php
$sql = "SELECT name FROM swords ORDER BY animals, colors";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo '"'.$row['name'].'":{url:images/'.$row['name'].'.jpg';
}
} else {echo "No records";}
?>
};
我尝试使用引号或heredoc将php代码定义为字符串并提醒字符串变量,但似乎脚本不会被执行
注意:我已经在这部分代码之前连接到数据库并从/向它传递数据。
答案 0 :(得分:1)
请勿尝试手动回复此问题。你可以做的是在PHP中构建相同的结构,然后使用json_encode
。
JSON实际上是有效的JavaScript代码,因此它可以工作。
试试这样:
<?php
$lookup = array();
$sql = "SELECT name FROM swords ORDER BY animals, colors";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
$lookup[$row['name']] = array('url' => 'images/'.$row['name'].'.jpg');
}
}
else {
//echo "No records";
}
?>
var lookup = <?=json_encode($lookup); ?>;
答案 1 :(得分:-2)
while循环中的echo
似乎有错误。您没有正确关闭字符串,它缺少结束部分},
。哪个应该是这样的:
echo '"'.$row['name'].'":{url:"images/'.$row['name'].'.jpg"},';