是否可以将sql表值分配给php中的变量?

时间:2015-04-27 23:16:55

标签: php mysql sql

基本上我想要的是将数据库中字段的值赋给变量。它能以有效的方式完成吗? 我想的是:

$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 个答案:

答案 0 :(得分: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();