php - 如何使用 php 从表中选择值使用一些键

标签 php mysql arrays

我想编写一个带有 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/

相关文章:

Javascript 函数只显示数组的最后一个元素

php - Doctrine——选择所有字段并按其中一个分组

php - Symfony2 : Read Cookie

php - 我有一个联系表,在适合移动设备的 css 样式上,它不允许我输入数据

php - 在 android 中获取 HTML 响应而不是 JSON

java - java中的内存使用大数组难题

php - 通过 IP 获取位置的良好服务?

mysql - 将行的子集从一个表复制到另一个表,过滤两列

MYSQL 表在删除期间超时

c++ - 在结构 T 中存储 T 数组时出现不完整类型错误