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

是否可以在php中将sql表值分配给变量?,php,mysql,sql,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; } 但这没有任何回应 编辑: 我已经有了一点时间,现在我

基本上,我想要的是将数据库中某个字段的值赋给一个变量。这能有效地做到吗? 我的想法是:

$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";
}
$conn=newmysqli($servername、$username、$password、$dbname);
//检查连接
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误);
} 
$sql=“从rom中选择*,其中idrom=101”;
$result=$conn->query($sql);
如果($result->num_rows>0){
//每行的输出数据
而($row=$result->fetch_assoc()){
$room101=$row[“idrom”];
$status101=$row[“status”];
回显“这是房间号”。$room101.!
”; echo”和roomnumber“$room101”的状态为“$status101”。

”; } }否则{ 回显“0结果”; } $sql2=“从rom中选择*,其中idrom=102”; $result2=$conn->query($sql2); 如果($result2->num_rows>0){ //每行的输出数据 而($row=$result2->fetch_assoc()){ $room102=$row[“idrom”]; $status102=$row[“status”]; 回显“这是房间号”。$room102.!
”; echo”和roomnumber“$room102”的状态为“$status102”。

”; } }否则{ 回显“0结果”; }
您可以使用
bind\u 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();
$mysqli=mysqli_connect('host'、'user'、'pass'、'dbase')或die('cannotconnect:'。mysqli_error());
如果($mysqli->connect\u error){
die(“连接失败:”..mysqli->connect\u错误);
}
//因为在where子句中提供了一个Id,所以可以将其用于新变量
$output=array();
$id=101;
$sql=“从rom中选择idrom,状态,其中idrom=?”;
$stmt=$mysqli->prepare($sql);
$stmt->bind_参数('i',$id);
$stmt->execute();
如果($stmt->errno==0){
$stmt->store_result();
//$stmt->bind_result($idrom,$status);//方式1
$stmt->bind_result($output[$id],$output[“status”。$id]);//方式2
而($stmt->fetch()){
echo$output[$id]。“->”“$output[”status.“$id]。”
“;//因此,对于方式2,您的输出变量将类似于$output[101] //或者你在这里这样定义: //$output[$idrom]=$idrom; //$output[“status”。$idrom]=$status;//用于方式1 } }否则{ 返回“Error:”.$sql.“
”$stmt->Error; } $stmt->close(); $mysqli->close();
您发布的代码没有任何明显的缺陷,但您尚未发布的代码(如连接到数据库)可能与此相关。也可能没有
idrow=101的行。请注意,
mysql_*()
已被弃用,不应用于新代码-使用
mysqli_*()
PDO
@HoboSapiens请查看我的编辑,但这不会将不同的id存储在不同的变量中?对于动态变量,您可以将其存储在
while loop
中,以便将新变量与
idroom
状态一起分配。顺便问一下,为什么表中的每个id都需要变量?这只会浪费你的内存:)你能提供一个例子吗?嗯,我知道你是这样做的,但不幸的是它没有回应任何东西。@user2927356,你必须仔细检查你的查询输出。尝试使用
var\u dump
。我已经对其进行了测试,代码运行良好。:)