PHP Select语句需要快速更正


PHP Select statement need quick correction

结尾的echo语句肯定是错误的,我把它放进去只是为了表明我正在尝试做什么,我只想像前面设置的那样调用这三个变量。这样做的正确方法是什么?

$table_id = 'mynewtable';
$query = "SELECT id,name,price FROM $table_id";
$result_set= mysql_query($query);
$id = "SELECT id FROM $table_id";
$name = "SELECT name FROM $table_id";
$price = "SELECT price FROM $table_id";
if ($result_set){
$record= mysql_fetch_row($result_set);
$idrecord= mysql_fetch_row($id);
$namerecord= mysql_fetch_row($name);
$pricerecord= mysql_fetch_row($price);
        foreach ( $record as $value){
        echo "<td><tr> $idrecord $namerecord $pricerecord </tr></td>";
    }
}

没有必要单独获取每个元素。使用mysql_fetch_assoc获取一个数组,该数组以SELECT语句中指定的列为键。这样你就可以很容易地得到你想要的回波,而不必不必要地查询数据库

$table_id   = 'mynewtable';
$query      = "SELECT id,name,price FROM $table_id";
$result_set = mysql_query($query);
if($result_set)
{
    while ($row = mysql_fetch_assoc($result_set)) {
        echo "<td><tr>" .$row["id"]
        . " ". $row["name"]
        . " " .$row["price"] . "</tr></td>";
    }
}
$table_id = 'mynewtable';
$query = "SELECT id,name,price FROM $table_id";
$result_set= mysql_query($query);
if (mysql_num_rows() > 0){
    while($row = mysql_fetch_array($result_set)) {
        echo $row['id'] .", ". $row['name'] .", ". $row['price'];
    }
}

请开始使用mysqli_*而不是mysql_*

您的$resultset只来自第一个查询($query = "SELECT id,name,price FROM $table_id";),而不是其他查询?

本节:

$id = "SELECT id FROM $table_id";
$name = "SELECT name FROM $table_id";
$price = "SELECT price FROM $table_id";

实际上是无用的,因为它只是将字符串分配给$id$name$price

你是说

$result_set= mysql_query($query);
while ($row = mysql_fetch_assoc($result_set)) 
{
    echo "<td><tr> ".$row['id']." ".$row['name']." ".$row['price']." </tr></td>";
}

为什么不

$table_id = 'mynewtable';
$query = "SELECT id, name, price FROM $table_id";
$result_set= mysql_query($query);
if ($result_set){
        while( $row = mysql_fetch_array(result_set)){ ?>
        <td>
          <tr> <?php echo $row['id'] . ' ' $row['name'] . ' ' . $row['price']; ?> </tr>
        </td>
<?php
    } // end of while
} // end of if
<?php
$query = "SELECT id,name,price FROM mynewtable";
$result_set = mysql_query($query);
if ($result_set!==false){
    while( $row = mysql_fetch_assoc( $result_set ) ) {
     echo '<td>' $row['id'] . ' ' . $row['name'] . ' ' . $row['price'] . '</td>';
    }
}
else {
    echo "Something went wrong with the query:";
    echo mysql_error( );
}

这似乎更像是应该起作用:)

EDIT:顺便说一句,不鼓励使用mysql_*,因为它们将在即将发布的PHP版本中消失。开始使用PDO或MySQLi。

您不需要为id、name和price分别选择三个选项。只需使用:

if ($result_set) {
    $row = $result_set -> fetch_assoc();
    $id = $row['id'];
    $name = $row['name'];
    $price = $row['price'];
}

然后你可以把它输入到你的表格中,或者用这些信息做任何你想做的事情。fetch_assoc()只有在使用MySQLi时才能工作。mysql_fetch_assoc已被弃用,您应该切换到PDOMySQLi