2015-06-10 66 views
0

在这些网站上有类似的问题,但我有点不同,我想在函数内做一个while循环(另一个没有要求)。将SQL while循环查询放在一个PHP函数中

我想要做的是在我的网站的不同部分上运行不同的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少的编码工作要做与高级主题和插件...

如果可能解释我有点什么我做错了。

+0

而是说你看到了类似的问题你可以把它连接起来,这对其他人更方便。你不妨修正一下你的语法,特别是“我”。 – meneldal

+0

错误消息和其他信息将帮助我们理解和诊断您的问题。我不是PHP程序员,但是你的示例不会丢失单引号,所以SQL将变成'SELECT * FROM labs WHERE level = Medium'而不是'SELECT * FROM labs WHERE level ='Medium''?另外,请参阅相关问题http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1,其中显示了将参数放入SQL中的正确方法。 – Turophile

回答

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>'; 
} 
+0

对于答复和清晰的解释,以及使用更多mysqli的提示对我来说也是非常有用的。我有一个问题,脚本没有工作,我都必须一次又一次地测试,但只是一个快速查询是不应该使用括号或while命令:while($ row = mysql_fetch_array($ resu)){ //里面的东西} $ rows [] = $ row;这段时间有语法错误吗? – bonini81

+0

很好地解决了这个问题,但脚本中有2个错误。第一个:WHERE level ='$ level'('level'用'')第二个:while循环应该有这些语法:while($ row = mysql_fetch_array($ resu)){rows = [$ row = $ row; }以外的是帮助的正确答案thanx! – bonini81