[英]PHP MySQLi get the row using foreach
我具有为从mysqli数据库获取数据行而创建的此功能。
我尝试使用foreach,但唯一得到的是类似我附加的图片的图片,请查看。
抱歉,我无法发布图片,因此我需要10点信誉才能做到。
下面:是的,这就是我得到的1 2 x MM n OOX
我的以下代码与形式和PHP
## FOR SHORTHAND DATABASE
if ( !function_exists( 'hs_debugSQL' ) ) {
function hs_debugSQL($hs_db, $string, $debug=0) {
if ($debug == 1)
print $string;
if ($debug == 2)
error_log($string);
$result = mysqli_query($hs_db, $string);
if ($result == false) {
error_log("SQL error: ".mysqli_error($hs_db)."\n\nOriginal query: $string\n");
// Remove following line from production servers
die("SQL error: ".mysqli_error($hs_db)."\b<br>\n<br>Original query: $string \n<br>\n<br>");
}
return $result;
}
}
## FOR SELECT SQL
if ( !function_exists( 'hs_getrows' ) ) {
function hs_getrows($sql, $debug=0) {
$result = hs_debugSQL($sql, $debug);
if($lst = mysqli_fetch_array($result)) {
mysqli_free_result($result);
return $lst;
}
mysqli_free_result($result);
return false;
}
}
形成
<label for="message_title">Send to Admin <span class="red">*</span></label>
<input id="name" name="user_to" class="text" />
<select name="user_to">
<?php
global $hs_db;
$get_list_admin = hs_getrows( $hs_db, "SELECT * FROM hs_users WHERE user_control = 'admin' " );
foreach ( $get_list_admin as $keys ) {
echo '<option value="'.$keys['user_login'].'">'.$keys['user_login'].'</option>';
}
?>
</select>
从mysqli的连接很好,因为您可以看到我可以从mysqli获取数据。 但是当我使用foreach检索数据时,它仅显示1个数字,有时还显示1个字符。
我喜欢学习foreach代码的问题。
谢谢。
说明
问题在这里:
if($lst = mysqli_fetch_array($result)) {
mysqli_free_result($result);
return $lst;
}
mysqli_fetch_array
返回,您应该遍历结果并返回数组。 像这样
$lst = array();
while ($lst = mysqli_fetch_array($result)){
$lst[] = $row;
}
mysqli_free_result($result);
return $lst;
编辑:
好吧,我看到了另外一个东西
hs_debugSQL($sql, $debug);
并以形式
hs_getrows( $hs_db,....)
我想您正在用要执行的SQL调用函数hs_debugSQL
,但是在您的函数中,第一个参数是数据库链接,第二个参数是您想要执行的SQL。 您应该更改它以匹配该函数的参数。
并且您在第一个参数和函数声明中通过数据库链接调用函数hs_getrows
,您期望使用$ sql,因此应对此进行更改。
我禁不住认为这些“辅助”功能使事情变得比应有的复杂。 这里有一个以上的问题,但是这是一个关键的问题:
该功能:
function hs_debugSQL($hs_db, $string, $debug=0) {
需要传入$ hs_db(一种dtabase连接资源),而此代码为:
function hs_getrows($sql, $debug=0) {
$result = hs_debugSQL($sql, $debug); // where is $hs_db?
if($lst = mysqli_fetch_array($result)) {
mysqli_free_result($result);
return $lst;
}
mysqli_free_result($result);
return false;
无法提供那个关键论点。 当然,进一步上涨的调用序列,我们发现$hs_db
已经提交,但现在已经被称为$sql
和查询似乎缺少。
简化! 摆脱这些无用的功能,弄清您要做什么并使其正常工作。 然后,如果您觉得有必要再次封装其中的某些内容,请继续工作,并知道代码基本可以正常工作。
如果您想使用真正的助手
<?php
$sql = "SELECT user_login FROM hs_users WHERE user_control = 'admin'";
$admin_list = $hs_db->getCol($sql);
?>
<label for="message_title">Send to Admin <span class="red">*</span></label>
<input id="name" name="user_to" class="text" />
<select name="user_to">
<?php foreach ($admin_list as $admin): ?>
<option value="<?=$admin?>"><?=$admin?></option>
<?php endforeach ?>
</select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.