我试图更改我的mysqli代码以使用预准备语句。
出于某种原因,我无法通常$row['']
工作。我用谷歌搜索了一段时间,但我还没有得到它。没有预备语句的代码是这样的:
if($result = mysqli_query($con,"SELECT * FROM users")) {
echo "
<thead>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
</tr>
</thead>
<tbody>";
while($row = mysqli_fetch_array($result)) {
if($row['status'] == "1") {
echo '<tr class="active">';
} elseif($row['status'] == "2") {
echo '<tr class="success">';
} elseif($row['status'] == "0") {
echo '<tr class="danger">';
} else {
echo '<tr class="warning">';
}
etc...
这是我到目前为止准备好的陈述:
$grab_user = $db->prepare("SELECT * FROM users");
if($grab_user->execute()) {
echo "
<thead>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
</tr>
</thead>
<tbody>";
while($grab_user->fetch()) {
$row = $grab_user->fetch_row();
if($row['status'] == "1") {
echo '<tr class="active">';
} elseif($row['status'] == "2") {
echo '<tr class="success">';
} elseif($row['status'] == "0") {
echo '<tr class="danger">';
} else {
echo '<tr class="warning">';
}
显然它似乎不起作用。我做错了什么?
答案 0 :(得分:1)
fetch_row
从结果集中获取一行数据并将其作为枚举数组返回,其中每列存储在从0(零)开始的数组偏移中。
所以它应该像$row[0]
。找出状态索引,然后使用适当的值。
如果您需要使用列名访问,则需要使用fetch_assoc
。
while($row=$grab_user->fetch_assoc()) {
if($row['status'] == "1") {
echo '<tr class="active">';
} elseif($row['status'] == "2") {
echo '<tr class="success">';
} elseif($row['status'] == "0") {
echo '<tr class="danger">';
} else {
echo '<tr class="warning">';
}
}
fetch_row
- 数字数组
fetch_assoc
- 关联数组
答案 1 :(得分:1)
如果你想要一个关联数组,你应该使用fetch_assoc()
,而不是fetch_row()
,它返回一个数字数组。
此外,您不应该在循环中同时调用fetch()
和fetch_assoc()
。它们中的每一个都将读取下一行,因此fetch_assoc()
将只获取结果的每一行。所以它应该是:
while ($row = $grab_user->fetch_assoc()) {
...
}