Php 在活动行数组内执行查询
基本上,我使用的是我在网上找到的mySQLi包装器,在尝试使用它时,我遇到了一个我看不到的问题,基本上,我正在执行这个Php 在活动行数组内执行查询,php,mysqli,Php,Mysqli,基本上,我使用的是我在网上找到的mySQLi包装器,在尝试使用它时,我遇到了一个我看不到的问题,基本上,我正在执行这个 <?php $res = $DB->Query("SELECT * FROM `table`"); while($row = $DB->Fetch()) { ?> <tr> <td><?php echo $row['id']; ?></td> <td><?
<?php
$res = $DB->Query("SELECT * FROM `table`");
while($row = $DB->Fetch()) {
?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $functions->checkStatus($row['arowhere']); ?></td>
</tr>
<?php
}
?>
有没有解决方案,或者有人给我指出正确的方向,这样我就可以避免这种情况了。您可以遍历这些行,并将它们添加到临时数组中。然后,在进行其他查询之后,可以通过该数组引用行。如果查询返回的行太多,这可能会影响内存,因此请小心
<?php
$res = $DB->Query("SELECT * FROM `table`");
$rows = array();
while($row = $DB->Fetch()) {
array_push( $rows, $row );
}
foreach( $rows as $row ){
?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $functions->checkStatus($row['arowhere']); ?></td>
</tr>
<?php
}
unset( $rows ); // destroys the temporary array, freeing the memory it consumed
?>
我不敢相信这样的包装能在网上找到。事实上,它是完全的,最终无法使用。 执行
mysqli->real\u escape\u字符串($SQL)代码>毫无意义。它不会保护您的查询不被注入,但会破坏任何复杂的查询。只要您尝试使用WHERE条件运行查询,它就会因错误而失效
下面这句话也错了
die('Problem with Query: ' . $this->SQL);
因为它既不显示错误,也不显示文件和行号
至少这个包装器的问题是您所面临的——它使用内部变量来保存结果,而它应该返回它
,它允许您通过占位符添加任何动态数据
使用SafeMysql,您的代码可以工作:
<?php
$res = $DB->query("SELECT * FROM `table`");
while($row = $db->fetch($res)) {
?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $functions->checkStatus($row['arowhere']); ?></td>
</tr>
<?php
}
?>
是的,不要使用这样的包装。。绝对没有理由使用它,简单的PDO/MySQLi对象也可以这样做,而不会带来所有麻烦。@dbf所以你建议我重新编写完整的应用程序?我建议不要使用开销;)如果它涉及重新编码您的应用程序,那么这取决于您。只需写一点参考指南。本例的一个小代码和包装器类,以及一个仅包含纯mysqli功能的示例。如果包装器类没有增加任何优点(但是缺点),那么您知道自己的选择;)你不能用一个JOIN
通过一个查询获取所有值吗?@CurtisCrewe我认为你选择使用这个包装器是为了写更少的代码,对吗?我认为包装器类对数据库连接使用单例方法?
<?php
$res = $DB->query("SELECT * FROM `table`");
while($row = $db->fetch($res)) {
?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $functions->checkStatus($row['arowhere']); ?></td>
</tr>
<?php
}
?>