2017-07-04 43 views
0

我是PHP语言的新手。我只是复制另一个示例项目的数据库连接功能。代码如下。如何使用此功能?我从其他项目中获取它

public function getRows($conditions = array()){ 
    $sql = 'SELECT '; 
    $sql .= array_key_exists("select",$conditions)?$conditions['select']:'*'; 
    $sql .= ' FROM '.$this->table; 
    if(array_key_exists("where",$conditions)){ 
     $sql .= ' WHERE '; 
     $i = 0; 
     foreach($conditions['where'] as $key => $value){ 
      $pre = ($i > 0)?' AND ':''; 
      $sql .= $pre.$key." = '".$value."'"; 
      $i++; 
     } 
    } 

    if(array_key_exists("order_by",$conditions)){ 
     $sql .= ' ORDER BY '.$conditions['order_by']; 
    } 

    if(array_key_exists("start",$conditions) && array_key_exists("limit",$conditions)){ 
     $sql .= ' LIMIT '.$conditions['start'].','.$conditions['limit']; 
    }elseif(!array_key_exists("start",$conditions) && array_key_exists("limit",$conditions)){ 
     $sql .= ' LIMIT '.$conditions['limit']; 
    } 

    $query = $this->db->prepare($sql); 
    $query->execute(); 

    if(array_key_exists("return_type",$conditions) && $conditions['return_type'] != 'all'){ 
     switch($conditions['return_type']){ 
      case 'count': 
       $data = $query->rowCount(); 
       break; 
      case 'single': 
       $data = $query->fetch(PDO::FETCH_ASSOC); 
       break; 
      default: 
       $data = ''; 
     } 
    }else{ 
     if($query->rowCount() > 0){ 
      $data = $query->fetchAll(); 
     } 
    } 
    return !empty($data)?$data:false; 
} 

谁能告诉我示例演示如何使用这个功能呢?我想使用WHERE,LIMIT,GROUP_BY和SELECT子句。当我把这样的数组,我得到错误信息“提供的foreach无效参数()”

$conditions = array('where' => "user_name = '$username'"); 
$data = $userMo -> getRows($conditions); 
+0

尝试$条件=阵列( '其中'=> “USER_NAME = '+ $用户名+'”);这 –

+0

谢谢,我已经试过了,它是不工作:( –

回答

3

你犯了一个错误,因为它说:Invalid argument supplied for foreach()

,这意味着它没有得到一个数组,并认为如果有多个WHERE然后?

所以尝试这个

$conditions = array('where' => array('user_name' => $username)); 
+0

感谢。现在的作品:) :) –

+0

欢迎你的兄弟:) :) – Exprator

+0

兄弟我有一个布尔返回没有数据。 –

相关问题