mysql - PHP PDO 简洁的 mySQL SELECT 对象

标签 mysql function object pdo

我使用 PDO 构建了一个简洁的对象,用于从数据库中检索行作为 PHP 对象,第一列值是名称,第二列值是所需值。

$sql = "SELECT * FROM `site`"; $site = array();
foreach($sodb->query($sql) as $sitefield){
    $site[$sitefield['name']] = $sitefield['value'];
}

我现在想将它应用于具有 2 个参数的函数,第一个包含表格,第二个包含任何 where 子句,然后产生相同的结果。

function select($table,$condition){
    $sql = "SELECT * FROM `$table`";
    if($condition){
        $sql .= " WHERE $condition";
    }
    foreach($sodb->query($sql) as $field){
        return $table[$field['name']] = $field['value'];
    }
}

可以这样称呼的想法:

 <?php select("options","class = 'apples'");?>

然后以与第一种方法相同的格式在页面上使用。

<?php echo $option['green'];?>

给我名为 value 的列的值,该列与名为 field 的列中名为“green”的值位于同一行。

问题当然是函数不会像那样返回 foreach 数据。那就是这个位:

        foreach($sodb->query($sql) as $field){
            return $table[$field['name']] = $field['value'];
        }

不能像那样返回数据。

有什么方法可以做到吗?

最佳答案

嗯,这个:

$sql = "SELECT * FROM `site`"; $site = array();
foreach($sodb->query($sql) as $sitefield){
    $site[$sitefield['name']] = $sitefield['value'];
}

很容易变成这样:

$sql = "SELECT * FROM `site`";
$site = array();
foreach( $sodb->query($sql) as $row )
{
    $site[] = $row;
}

print_r($site);

// or, where 0 is the index you want, etc.
echo $site[0]['name'];

因此,您应该能够将所有列映射到多维数组 $site 中。

此外,在将输入直接转储到该查询之前,不要忘记清理您的输入。 PDO 的好处之一是使用占位符来保护自己免受恶意用户的侵害。

关于mysql - PHP PDO 简洁的 mySQL SELECT 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12306416/

相关文章:

c++ - 接受 vector 并返回数组的函数

javascript - 如何在 javascript 中将对象的普通数组转换为多级数组?

javascript - 改变克隆对象,也改变原始对象 [Javascript]

javascript - Javascript中对象的自定义属性映射

mysql - 是否可以在 SQL 的存储过程中声明数组变量?

mysql - SQL 查询的正确方法

mysql - 从数据透视表中获取不重复的数据

javascript - 为什么中缀增量运算符 (++) 不能用于 IIFE?

php - 选择枚举时将字符串分配给另一列

jquery - 使用 jQuery 的可编辑文本功能