SQL查询不会在php中输出结果

时间:2014-01-27 03:25:13

标签: php sql

我有一个下拉列表脚本,在该脚本中从数据库中填充它。我正在尝试在列表中显示名称,但实际值是名称的ID。我认为最好显示我的代码来解释我正在尝试做的事情:

mysql_connect('localhost', 'user', 'pw');
    mysql_select_db ("db");
    $sqlId = "SELECT id FROM materials";
    $sql = "SELECT name FROM materials";
    $result = mysql_query($sql);
    $resultId = mysql_query($sqlId);

    echo "<td><select name='materials'>";

    while ($row = mysql_fetch_array($result) && $row2 = mysql_fetch_array($resultId)) 
        {
            echo "<option value='" . $row2['id'] . "'>" . 
            $row['name'] . "</option>";
        }

    echo "</select></td></tr> ";

每次运行此操作时,都不会填充下拉列表。我做错了什么?

3 个答案:

答案 0 :(得分:1)

我修改了你的代码,现在这应该可行。

mysql_connect('localhost', 'user', 'pw');
mysql_select_db ("db");

$sql = "SELECT id, name FROM materials";
$result = mysql_query($sql);

echo "<td><select name='materials'>";

while($row = mysql_fetch_assoc($result)) {
     echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
}

echo "</select></td></tr> ";
祝你好运! : - )

答案 1 :(得分:0)

我改变了

&安培;&安培;

在条件下

到“AND”并且它起作用。

答案 2 :(得分:0)

您的代码对operator precedence做出了错误的假设。

以下是您的while语句的评估方式..

while ($row = (mysql_fetch_array($result) && ($row2 = mysql_fetch_array($resultId))) )

添加的括号显示PHP评估循环语句的顺序。 $row永远不会保存一个值数组,而是赋予它一个布尔值。

这是一个更简单的例子:

var_dump( $x = 1 && $y = 2 );  // outputs bool(true)
var_dump( $x );  // outputs bool(true)
var_dump( $y );  // outputs int(2)

要解决此问题,您应该将代码重写为while (($row = mysql_fetch_array($result)) && ($row2 = mysql_fetch_array($resultId))),或者像您一样,使用and运算符(优先级较低)。