使用MySQLi准备语句获取行的问题

时间:2015-07-21 14:40:52

标签: php mysqli prepared-statement

我试图通过使用以下准备语句从MySQL数据库中获取一些数据。但我在这里有两个问题:

1-代码仅返回最后一行的值,但正如您所见,我在{/ 1}}处使用while迭代器

$stmt->fetch()

2 - 另一件事是当我尝试在代码片段2中使用while($stmt->fetch());{ echo '<option value="'.$uid.'">'.$name.'</option>'; } 时,我得到的是 Cant&#39;查找数据消息!

if($stmt->num_rows > 0){}

摘录2与 <?php $conn = new mysqli('localhost', 'root', '', 'dbmodel'); if ($conn->connect_error) { die("Connection Failed: " . $conn->connect_error); } $sql = 'SELECT uid, name FROM `single-animals-tbl`'; $stmt = $conn->prepare($sql); $stmt->execute(); $stmt->bind_result($uid,$name); ?> <select> <option value="0">Select From The List</option> <?php while($stmt->fetch());{ echo '<option value="'.$uid.'">'.$name.'</option>'; } $stmt->close(); $conn->close(); ?> </select>

if($stmt->num_rows > 0){}

2 个答案:

答案 0 :(得分:1)

至于你的第一个问题: 在你的while循环之后你有一个虚假的分号。所以它相当于

while($stmt->fetch())
{
    ;
}
{
    echo  '<option value="'.$uid.'">'.$name.'</option>';
}

删除它,它应该工作

答案 1 :(得分:0)

尝试使用1 + 1/4 + 1/9代替get_result,然后继续使用bind_result

P.S。这将需要安装mysqlnd