Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否使用PDO创建查找方法?_Php_Mysql_Pdo - Fatal编程技术网

Php 是否使用PDO创建查找方法?

Php 是否使用PDO创建查找方法?,php,mysql,pdo,Php,Mysql,Pdo,在过去,我使用框架作为Slim或CodeIgniter,两者都提供了getWhere(),如果在数据库表中找到传递到getWhere的数组内容,则此方法返回true或false。 实际上,我已经创建了自己的层类来扩展PDO功能,我的目标是创建一个方法,根据提供的参数查找特定的数据库内容,目前我创建了以下内容: public function findRecordById($table, $where = null, $param = null) { $results = $this-&g

在过去,我使用框架作为
Slim
CodeIgniter
,两者都提供了
getWhere()
,如果在数据库表中找到传递到
getWhere
的数组内容,则此方法返回
true
false
。 实际上,我已经创建了自己的层类来扩展PDO功能,我的目标是创建一个方法,根据提供的参数查找特定的数据库内容,目前我创建了以下内容:

public function findRecordById($table, $where = null, $param = null)
{
    $results = $this->select("SELECT * FROM $table WHERE $where",$param);
    if(count($results) == 0)
    {
        return false; 
    }
    return true;
}
对于搜索内容,我只需执行以下操作:

if(!$this->db->findRecordById("table_name", "code = :key AND param2 = :code",
            array("key" => $arr['key'], "code" => $arr['code']))){
  echo "content not found";
}

现在一切都很好,但我认为对条件的调用有点“太长和不切实际,我想优化所有内容,可能将所有内容放入数组或其他东西,但直到现在我有一个确切的想法。有什么帮助吗?

我不太理解您的问题,但是对于提供的代码,我可以告诉您,这样的方法不应该属于DB包装器,而应该属于CRUD类,这是一个完全不同的故事

如果您想使用这样一种方法,它应该是模型的方法类,并像这样使用

$article = Article::find($id);
而对于数据库包装器

是任何人都能阅读和理解的干净、整洁、可读的代码


作为奖励,您将能够使用order BY运算符对查询结果进行排序。

我不太理解您的问题。@YourCommonSense Uhm,我不知道您不理解什么,但我只是想优化我的方法
findRecordById
,现在我必须传递表名(我需要在其中查找记录),where子句和参数作为数组。我想在一个数组或类似的东西中优化所有并传递where和paremeters,但我不明白编写示例代码如何优化我的
find
方法。它解释了数据库包装器中根本不应该有find方法,因此建议为每个模型创建一个
exist
方法?不是为每个模型,而是仅为父模型类。所有模型都将从中继承我给您的链接根本不在RESTAPI上。事实上,这正是由于包装器的错误设计造成的问题。FetchColumn必须应用于语句,而不是结果数组。
$sql = "SELECT * FROM table_name WHERE code = :key AND param2 = :code";
$data = $this->db->query($sql, $arr)->fetchAll();