将数组转换为字符串以创建sql查询

时间:2016-05-31 21:11:18

标签: php mysql arrays function

我正在创建一个可用于从数据库中选择单个行的函数。函数的参数是select,table和where(这是一个数组)。

这是我到目前为止所做的:

  public function select_row($select, $table, $where = '') {
$sql = "SELECT {$select} FROM {$table}";

if(!empty($where)) {
  $sql .= " WHERE {$where} LIMIT 1";
} else {
  $sql .= " LIMIT 1";
}

echo $sql;}

我想要更改的是$ where变量,我想将其更改为数组,如下所示:

$where = array('id' => '1');

但我不太确定如何做到这一点,我尝试了implode()但我无法理解。

非常感谢任何帮助,

基隆

1 个答案:

答案 0 :(得分:0)

以下是如何构建where子句的示例。但我建议您使用查询构建器,例如这里是cakePHP的http://book.cakephp.org/3.0/en/orm/query-builder.html

 <?php
 require 'connect.php';

 $firstname = 'Alex';
 $lastname = 'Smith';

 $query = 'SELECT * FROM users';

 $cond = array();
 $params = array();

 if (!empty($firstname)) {
     $cond[] = "firstname = ?";
     $params[] = $firstname;
 }

 if (!empty($lastname)) {
     $cond[] = "lastname = ?";
     $params[] = $lastname;
 }

 if (count($cond)) {
     $query .= ' WHERE ' . implode(' AND ', $cond);
 }

 $stmt = $db->prepare($query);
 $stmt->execute($params);

 foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
     print_r($row);
 }
 ?>