2012-08-02 155 views
0

我的echo聲明最後肯定是錯誤的,我只是爲了展示我正在嘗試做什麼,我只是想將這三個變量設置爲set先前。什麼是正確的方式來做到這一點?PHP select語句需要快速更正

$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>"; 
    } 
} 

回答

3

沒有意義,分別提取每個元素。使用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>"; 
    } 

} 
+0

感謝這很好。非常感激。許多其他人也提供了正確和可行的信息。感謝大家。 – acidking 2012-08-02 14:39:14

1

$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>"; 
} 
+0

@Wiseguy很好發現。更正了'foreach'使用'$ result_set'正如鷹眼:) – Fluffeh 2012-08-02 13:47:21

+0

@Wiseguy對不起,我通常會複製並粘貼我的PDO函數。自從我使用'mysql_ *'函數以來,它已經是非常有趣的事情了:( – Fluffeh 2012-08-02 13:57:53

+0

@wiseguy來吧,給我一個骨頭,這是午夜,我有幾杯紅色,我的大腦不能輕彈回程序PHP和mysql_的功能 – Fluffeh 2012-08-02 14:03:13

1
$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_ *

+0

會這樣做,謝謝你的信息。 – acidking 2012-08-02 13:48:48

0

爲什麼不

$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 
0

你並不需要有ID,名稱和價格三個獨立的選擇。只需使用:

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

然後,您可以將其輸入到您的表中,或者做任何您想要的信息。 fetch_assoc()只有在您使用MySQLi時纔有效。 mysql_fetch_assoc棄用,你應該切換到任何PDO的MySQLi

0
<?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(); 
} 

這似乎更喜歡它應該工作:)

編輯:順便說一下,使用mysql_ *非常令人沮喪,因爲它們將在即將到來的PHP版本中消失。改爲使用PDO或MySQLi。