我想编写一个带有 2 个参数的函数:一个是表名,另一个是键的关联数组。现在我有一个功能:
//返回一个关联数组,其中包含 $table 中给定 $keyValues 的所有信息
function getAllFrom($table,$keyValues){
$qry="SELECT * FROM ". $table;
$i=sizeof($keyValues);
foreach($keyValues as $key=>$val) {
if($i==1) $qry.=" WHERE ".$key."=".$keyValues[$key]." ";
else $qry.=" AND ".$key."=".$keyValues[$key]." ";
$i++;
}
//echo " query is : ".$qry;
$result=mysql_query($qry) or die("Query $qry failed.");
if($results= mysql_fetch_assoc($result))
return $results;
else return false;
} // end getAllFrom
但这不是工作。谁能帮我修改这个并告诉我 foreach($keyValues as $key=>$val) 是什么意思?我很困惑。
谢谢!
最佳答案
您的代码可以解决,但我宁愿告诉您不要尝试解决该特定代码,因为它是一个旧的已弃用的解决方案,您希望稍后尽快删除。
您想要做的是使用 PDO 适配器 http://php.net/manual/en/class.pdo.php
这样做的好处是,您可以免受用户输入中潜伏的所有邪恶的影响,并且您还可以获得许多很好的抽象,可以完全解决您所描述的问题。
这是我在代码中用来执行此操作的函数,它可能看起来有点高级,但如果您查阅手册,解决它应该不会有问题。
public function select( $table, array $conditions )
{
$where = array();
foreach ( $conditions as $col => $value )
{
$input[":" . $col] = $value;
$where[] = $col." = :" . $col;
}
$sql = "SELECT FROM " . $table
. " WHERE ".implode("AND", $where);
return (int) $this->prepare( $sql )
->execute( $conditions )
->getLastInsertId();
}
为了理解 Foreach 循环,我会阅读手册 http://php.net/manual/en/control-structures.foreach.php 我建议您研究的另一个内置函数是 http://php.net/manual/en/function.implode.php
关于php - 如何使用 php 从表中选择值使用一些键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23211823/