我需要检查while循环中的表是否存在记录。如果没有,我想显示一条消息。从我所做的代码中,如果存在行,它也将输出消息。以下是代码,
<?php
$mysqli = new mysqli("localhost", "root", "", "my_dev");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
die();
}
/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT * FROM user WHERE staff_id=?"))
{
/* bind parameters for markers */
$stmt->bind_param("i", $id);
/* execute query */
$stmt->execute();
/* store result */
$stmt->store_result();
/* bind result variables */
$stmt->bind_result($t_id, $name, $ic_no);
/* fetch value */
while ($row = $stmt->fetch()) { ?>
<div class="form-group">
<input type="text" name="nama[]" id="nama" class="form-control"
placeholder="Nama" value="<?php echo $name?>" >
</div>
<div class="form-group">
<input type="text" name="ic_no[]" id="ic_no" class="form-control"
placeholder="No. K/P" value="<?php echo $ic_no; ?>" >
</div>
<?php }
if ($row < 1) {
echo "No records!";
}
/* close statement */
$stmt->close();
}
检查病情的正确方法是什么?
答案 0 :(得分:1)
您需要问的问题是&#34;什么是$row
?&#34;
让我们逐步完成您的代码,假设while
以上的所有内容都是正确的(我不知道,我不会使用mysqli):
while ($row = $stmt->fetch()) {
只要$stmt->fetch()
返回一个值,在这种情况下很可能是一个对象,$row
接收该对象,whle
认为这是真的,执行将转到下一行。当$stmt->fetch()
用完行时,会返回false
并退出while
循环。
与此同时,当您进入循环时,您可以访问数据库中的数据,通常是通过引用类似$row->columnName
所以你的while循环会是这样的:
while($row = $stmt->fetch()) {
print "I'm column one: " . $row->columnOnesName . "<br>";
print "I'm column two: " . $row->columnTwosName . "<br>";
}
当行用完时,$row
会获得$stmt->fetch()
给出的值,最有可能是null
。这个评估结果不是真的,而while循环则会中断。
如果你那么做
if ($row < 1) {
如果null
&lt; 那么它将跟随分支。 1。
查看是否有任何数据行的快速简便方法是简单地使用标记。
$isEmpty = true;
while($row = $stmt->fetch()) {
$isEmpty = false;
// display table's output with $row->columnNames
}
if($isEmpty) {
print "no rows in table";
}