【发布时间】:2014-05-31 17:31:44
【问题描述】:
我以前打印 MySQL 查询结果是这样的:
$query="SELECT fname,lname,email FROM users";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
$i=0;
echo '<table BORDERCOLOR=black>';
?>
<tr>
<th>Vardas</th><th>Pavarde</th><th>E-Mail</th>
</tr>
<?php
while ($i < $num) {
$field1=mysql_result($result,$i,"fname");
$field2=mysql_result($result,$i,"lname");
$field3=mysql_result($result,$i,"email");
echo "<td>";
echo $field1;
echo "</td>";
echo "<td>";
echo $field2;
echo "</td>";
echo "<td>";
echo $field3;
echo "</td>";
echo "</tr>";
$i++;
}
echo "</table>";
但这一次我必须使用不同的东西,我想知道如何在使用下面显示的函数/查询时打印出我的结果:
查询代码(在'class DB'中):
function query($querytext) {
$rs = mysql_query($querytext, $this->_link);
if($this->_debug) {
$this->addDebugMessage("\t<tr>\n\t\t<td class=\"debug_nr\">".$this->_queryCount++."</td>\n\t\t<td class=\"debug_queInfo\"><b>Query: (".@mysql_num_rows($rs).")</b></td>\n\t\t<td>" . htmlspecialchars($querytext) . "</td>\n\t</tr>\n");
if(mysql_error() != '') {
$this->addDebugMessage("\t<tr>\n\t\t<td class=\"debug_nr\">".$this->_queryCount++."</td>\n\t\t<td class=\"debug_queInfo\"><b>Error #".mysql_errno($this->_link)." :</b></td>\n\t\t<td>" . htmlspecialchars(mysql_error($this->_link)) . "</td>\n\t</tr>\n");
}
}
if($rs) {
$num_rows = @mysql_num_rows($rs);
if($num_rows) {
if($num_rows > 0) {
$rsarray = array();
while($line = mysql_fetch_array($rs , MYSQL_ASSOC)) {
array_push($rsarray, $line);
}
mysql_free_result($rs);
return $rsarray;
} else {
return false;
}
} else {
if(mysql_affected_rows($this->_link) > 0) {
return true;
} else {
return false;
}
}
} else {
return false;
}
}
(在“类用户”中)
function findUser($phrase){
global $DB;
$results=$DB->query("SELECT * FROM users WHERE fname LIKE '%'$phrase'%' OR lname LIKE '%'$phrase'%' OR email LIKE '%'$phrase'%'");
return $results;
}
在 index.php 中(我用什么打印出来?):
$USER->findUser("john");
或者应该是
$results= $USER->findUser("john);
或
$results=DB->findUser("john");
【问题讨论】:
-
你确定 findUser 函数真的在做什么吗?好像没有返回查询结果。
-
我不确定。我在 $DB->query("DELETE...") 中使用了相同的函数,这很有效,我想我需要在这个函数中使用“return $query”?
-
是的,我认为 findUser 应该
return从$DB->query()得到什么。对于 DELETE 查询,没有结果,因此您不一定需要返回。 -
另外,请注意,您的查询函数(在一些奇怪的事情中)返回的结果是数组数组,而不是 MySQL 结果。这意味着你不使用 mysql_numrows 和 mysql_result 来循环数据,只是一个简单的 foreach 或类似的东西。
-
我已将返回值编辑到代码中,这是否意味着我无法像第一种方法那样将其很好地打印到表格中?