我使用 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/