将SQL while循环查询放在PHP函数中

时间:2015-06-10 01:43:33

标签: php sql function

之前在这些网站上有一个类似的问题,但我的变化有点我想在函数内做一段时间(另一个没有要求)。

我想要做的是在我的网站的不同部分运行不同的SELECT查询,所以为了避免重复那些类似版本的SELECT查询,我想在functions.php文件中创建一个为我做这个的函数。所以我想在functions.php文件中执行这些操作:

function imasde($level) { 
    /* $level is to select custom tables for different pages not just the same table */
    $value = "";    
    $sql = "SELECT * FROM labs WHERE level = $level";
    $resu = mysql_query($sql);
    $row = while( $fila=mysql_fetch_array($resu));
    $value = $row;
    return $value;
}

所以在HTML模板上我都把这些代码用来使用这个函数。

<?php echo imasde('Medium'); ?>
<div class="task medium"> /*It should loop the different values on the Selected tables not just one value */
    <div class="title"><?php echo $value["name"]; ?></div>
    <div class="date"><?php echo $value["category"]; ?></div>
</div>

当然有一个错误,因为它没有工作,抱歉,如果它听起来很愚蠢的查询,但我已经失去了对后端编码的练习一段时间,也使用WordPress少量编码来完成一个高级主题和插件...

如果可能的话,请向我解释一下我做错了什么。

1 个答案:

答案 0 :(得分:1)

建议:在弃用时停止使用mysql_*功能(了解更多here

相反,请考虑使用mysqli_* functionsPDO

对于你的问题,你基本上一直在设置相同的值。然后处理它作为$row不是数组的数组来解决这个问题,您可以将它用作这样的数组:

function imasde($level)
{ 
    /* $level is to select custom tables for different pages not just the same table */
    $value = "";    
    $sql = "SELECT * FROM labs WHERE level = $level";
    $resu = mysql_query($sql);

    // Declare the rows array
    $rows = array();

    // Insert each row to the array
    while($row = mysql_fetch_array($resu))
        $rows[] = $row;

    // Return the array
    return $rows;
}

然后:

$rows = imasde('Medium');

foreach($rows as $row)
{
    echo '<div class="task medium">';
    echo '<div class="title">'. $row["name"] .'</div>';
    echo '<div class="date">'. $row["category"] .'</div>';
    echo '</div>';
}