【问题标题】:Putting SQL while loop query inside a PHP function将 SQL while 循环查询放在 PHP 函数中
【发布时间】:2015-06-10 01:43:32
【问题描述】:

之前在这些网站上有一个类似的问题,但我有点不同,我想在函数内部做一个 while 循环(另一个没有要求)。

我想要做的是在我网站的不同部分运行不同的 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 用高级主题完成的小编码和插件...

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

【问题讨论】:

  • 不要说您看到了类似的问题,您可以链接它,这对其他人来说会更方便。你不妨修正一下你的语法,尤其是“i”。
  • 错误消息和其他信息将帮助我们了解和诊断您的问题。我不是 PHP 程序员,但您的示例不会丢失单引号,因此 SQL 将变为 SELECT * FROM labs WHERE level = Medium 而不是 SELECT * FROM labs WHERE level = 'Medium' 吗?另外,请参阅相关问题 stackoverflow.com/questions/60174/…,它显示了将参数放入 SQL 的正确方法。

标签: php sql function


【解决方案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>';
}

【讨论】:

  • 感谢您的回复和清晰的解释,使用更多 mysqli 的提示对我也非常有用。我有一个问题,脚本不工作,我都必须一次又一次地测试它,但只是一个快速查询不是应该带括号的while命令或:while($row = mysql_fetch_array($resu)){ //这里有东西} $rows[] = $row; while 是否有语法错误?
  • 很好地解决了这个问题,但您的脚本有 2 个错误。第一个:WHERE level = '$level' ('level' with '') 第二个:while 循环应该有这些语法:while($row = mysql_fetch_array($resu)){ $rows[] = $row; } 除了是正确的答案thanx 的帮助!
猜你喜欢
  • 2013-10-27
  • 2014-06-18
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多