2015-04-01 81 views
0

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

这是我到目前为止的代码。

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放入列表中。

但是,当我运行此代码时,根本没有显示Alert Box。

感谢,

+0

你如何执行你的JavaScript代码做呢?显示更多。 – bloodyKnuckles 2015-04-01 14:08:48

+0

你检查了控制台的JS错误吗?也许代码在DOM准备好之前运行? – Raziel 2015-04-01 14:10:22

+0

更改HTML编号输入时正在执行的代码。 – FeaturedEpic 2015-04-01 14:11:27

回答

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); 
+0

没关系,问题是拼写错误。尽管如此,感谢htmlspecialchars上的提示。 – FeaturedEpic 2015-04-01 14:17:20

0

这里是如何与开源项目http://www.jinqJs.com

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