功能php与PDO while循环

时间:2014-03-18 09:28:51

标签: php mysql pdo

任何人都可以解释为什么这个功能不起作用!

我的SQL表 - 类别

id| name    | lft| rgt
----------------------
1 | Datorer  | 0 | 16
5 | test     | 4 | 6
4 | Sationär | 2 | 4
3 | Bärbar   | 1 | 3
2 | typ      | 3 | 15

conn.php - 这是我获得数据库连接的地方。

<?php
$db_host = "***********";
$db_username = *******";
$db_pass = "******";
$db_name = "*******";
$options  = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'");
$db = new PDO('mysql:host='.$db_host.';dbname='.$db_name,$db_username,$db_pass, $options);
?>

functions.php - 这是我的功能,我无法弄清楚是什么错误!

function getSELECT($select,$table,$value) {
    include "conn.php"; // The database connection
    $sql = "SELECT '$select' FROM '$table' ORDER BY '$value'";
    $sth = $db->prepare($sql);
    $sth->execute();
    $r = $sth->fetch(PDO::FETCH_ASSOC);
    if (!isset($r)) {
        trigger_error('PDO generic ERROR: No pdo query found', E_USER_ERROR);
    }else{
        return $r;
    }
}

test.php - 在这里我调用我的函数并运行while循环。但我没有从表格类别中获得任何名称。

include "conn.php";
include "functions.php";

$result = getSELECTall("categories","asc");
while ($row = $result->fetchAll(PDO::FETCH_ASSOC))  {
    echo $row['name'];
}

2 个答案:

答案 0 :(得分:0)

你不应该使用这个功能 - 这是不安全的,没有任何意义。

相反,您必须学习基本的SQL语法,始终严格遵循它。

在熟悉SQL和PDO之前,请尽量避免编写函数。 PDO本身几乎与您可能设计的任何功能一样好。

$result = $db->query("SELECT * FROM categories ORDER BY name ASC");

就是你所需要的。

毕竟,它更具可读性,而且可以按预期的方式运作,而你的功能却没有。

答案 1 :(得分:0)

表名和列名应在&#34;中引用。 `&#34; (严重重音)和与&#34; &#39; &#34 ;. 尝试更改