我试图将sql查询的结果存储到我的php查询中的变量中。但问题是,它不起作用,仅仅因为我正在制作小学生错误,而且由于我缺乏PHP经验。
这是我的代码:
<?php
if(!empty($_POST['driverNo'])){
$driverNoText = $_POST['driverNo'];
$stmt = "SELECT registrationNo FROM cars WHERE driverNo = ?";
$result = $conn->prepare($stmt);
$result->bind_param('s', $driverNoText);
$result->execute();
$result->store_result();
if($result->num_rows > 0){
$registrationNo = $result["registrationNo"];
echo $registrationNo;
}
else{
$registrationNo = "";
}
}
else{
echo "Something went horribly wrong";
}
?>
我只想将registrationNo存储到$ registrationNo中,因为我需要在以后的其他地方使用该值。
如果有人可以帮助我解决我的错误,那将意味着很多
由于
答案 0 :(得分:0)
您正在尝试错误地访问该值。它不是一个数组,请尝试替换它:
$registrationNo = $result["registrationNo"];
用这个:
$registrationNo = $result[0]->registrationNo;
希望有所帮助!
答案 1 :(得分:0)
您是否知道自己究竟在哪里面对这个问题?
您可以尝试调试。尝试这样的事情:
$stmt = "SELECT registrationNo FROM cars WHERE driverNo = ?";
$result = $conn->prepare($stmt) or die( mysqli_error($dbh) ); // Where $dbh = mysqli_connect("localhost","root", "password", "database");
$result->bind_param('s', $driverNoText);
$result->execute() or die( mysqli_stmt_error($result) );
//$result->store_result();
/* I'd prefer you to use bind result instead */
$result->bind_result($registrationNo);
echo $registrationNo; // This must show the registration no.
希望这有帮助。
和平!的xD
答案 2 :(得分:0)
试试这个:(用于数组提取)
<?php
// your codes ...
$result->bind_param('s', $driverNoText);
$result->execute();
$result->bind_result($col);
if($result->num_rows > 0){
while ($result->fetch()){
$registrationNo = $col;
echo $registrationNo."<br/>";
}
} else{
$registrationNo = '';
echo $registrationNo."<br/>";
}
// your code ...
?>
答案 3 :(得分:0)
现在你正在这样做,$ result是一个包含表格中整行数据的数组,但由于你试图返回一个值而不是一个完整的行,你可以使用:
$sql = "SELECT registrationNo FROM cars WHERE driverNo = " . $_POST['driverNo'];
$registrationNo = $conn->query($sql)->fetch_row()[0];
基本上,这会将查询返回的数组转储到fetch_row()
,[0]
只访问该数组中的第一个元素。由于您只在SQL中指定了一个字段,因此该数组中的第一个值应该是您想要的数据。
如果你想保留所有代码,你可以这样改变它:
$registrationNo = $result->fetch_row()[0];