0

mysqli データベースからデータの行を取得するために作成したこの関数があります。

foreach を使用しようとしましたが、画像を添付したようなものしか得られませんでした。

申し訳ありませんが、画像を投稿できません。それには 10 の評判が必要でした。

以下:はい、これらは私が得たものです1 2 x M M n O O X

フォームと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 のコードの何が問題なのかを知りたいです。

ありがとうございました。

4

3 に答える 3

0

本当のヘルパーを使いたい場合

<?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>
于 2013-10-24T06:59:16.220 に答える
0

これらの「ヘルパー」関数が、本来よりも物事を複雑にしていると思わずにはいられません。ここには複数の問題がありますが、ここに重要な問題があります。

この機能:

    function hs_debugSQL($hs_db, $string, $debug=0) {

このコードでは、データベース接続リソースである $hs_db を渡す必要があります。

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

簡素化する!これらの役に立たない機能を取り除き、何をしようとしているのかを明確にし、何かを機能させます。次に、これの一部を再度カプセル化する必要があると感じた場合は、コードが基本的に機能することを理解してください。

于 2013-10-24T06:48:51.893 に答える