2015-04-27 86 views
1

基本上我想要的是將我的數據庫中的字段值賦給變量。它能以有效的方式完成嗎? 我的想法是這樣的:是否可以將sql表值分配給php中的變量?

$sql2 = mysql_query("SELECT * FROM rom WHERE idrom = 101"); 
while ($row = mysql_fetch_array($sql2)) { 
$rom1 = $row['idrom']; 
$status = $row['status']; 
echo $rom1; 
echo $status; 
} 

但這並不附和什麼。

編輯:

我已經得到多一點的時間在路上,現在我正在尋找的值賦給變量簡單的方法。正如我們所說,我只需要4個值,但這看起來仍然不是一個很好的方法來實現我想要的。有更好的建議嗎?

繼承人什麼,我現在得到:

$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM rom WHERE idrom = 101"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
// output data of each row 
while($row = $result->fetch_assoc()) { 
    $room101 = $row["idrom"]; 
    $status101 = $row["status"]; 

    echo "This is roomnumber ". $room101 . "!<br >"; 
    echo "And the status of roomnumber ". $room101 ." is ". $status101 ."<br><br>"; 
} 

} else { 
echo "0 results"; 
} 

$sql2 = "SELECT * FROM rom WHERE idrom = 102"; 
$result2 = $conn->query($sql2); 
if ($result2->num_rows > 0) { 
// output data of each row 
while($row = $result2->fetch_assoc()) { 
    $room102 = $row["idrom"]; 
    $status102 = $row["status"]; 

    echo "This is roomnumber ". $room102 . "!<br >"; 
    echo "And the status of roomnumber ". $room102 ." is ". $status102 ."<br><br>"; 
} 

} else { 
echo "0 results"; 
} 
+1

您已發佈並沒有任何明顯的缺陷的代碼,但是你_haven't_代碼發佈(如連接到數據庫)可能相關。也有可能沒有'idrow = 101'的行。請注意,'mysql _ *()'不推薦使用,不應該用於新代碼 - 使用'mysqli _ *()'或'PDO' –

+0

@HoboSapiens請參閱我的編輯 –

回答

0

您可以使用bind_result做到這一點。

請試試這個簡單的例子,希望它運行良好:

$mysqli = mysqli_connect('host', 'user', 'pass','dbase')or die('Could not connect: ' . mysqli_error()); 

if ($mysqli->connect_error) { 
    die("Connection failed: " . $mysqli->connect_error); 
} 

// Because you provide an Id in where clause, you can use it for the new variable 
$output = array(); 

$id = 101; 
$sql = "select idrom,status from rom where idrom=?"; 
$stmt = $mysqli->prepare($sql); 
$stmt->bind_param('i',$id); 
$stmt->execute(); 

if ($stmt->errno == 0) { 
    $stmt->store_result(); 
    // $stmt->bind_result($idrom,$status); // way 1 
    $stmt->bind_result($output[$id],$output["status".$id]); // way 2 

    while ($stmt->fetch()) { 
     echo $output[$id]." -> ".$output["status".$id]."<br />"; // So, your output variable will be like $output[101] for way 2 
     // or you defined it here like : 
     // $output[$idrom] = $idrom; 
     // $output["status".$idrom] = $status;  // For way 1 
    } 
} else { 
    return "Error: " . $sql . "<br>" . $stmt->error; 
} 

$stmt->close(); 
$mysqli->close(); 
+0

,但這不會將不同的id存儲在不同的變量? –

+0

對於動態變量,您可以將其存儲在'while循環'中,以便爲您的'idroom'或您的'status'指定一個新變量。順便說一句,爲什麼你需要在你的表中的每個ID變量?它只是浪費你的記憶:) –

+0

你能提供一個例子嗎? –