2013-06-03 10 views
-1

У меня есть этот OOP Выберите, что я использую, и я хочу добавить JOIN к возможностям. Однако мой новый код не создает массив. Может ли кто-нибудь помочь?OOP Select, включая JOIN

Вот мой первоначальный простой Выберите, который работает как сон

public function select($table, $rows = '*', $where = null, $order = null) 
{ 
    $q = 'SELECT '.$rows.' FROM '.$table; 
    if($where != null) 
     $q .= ' WHERE '.$where; 
    if($order != null) 
     $q .= ' ORDER BY '.$order; 

    $query = @mysql_query($q); 
    if($query) 
    { 
     $this->numResults = mysql_num_rows($query); 
     for($i = 0; $i < $this->numResults; $i++) 
     { 
      $r = mysql_fetch_array($query); 
      $key = array_keys($r); 
      for($x = 0; $x < count($key); $x++) 
      { 
       // Sanitizes keys so only alphavalues are allowed 
       if(!is_int($key[$x])) 
       { 
        if(mysql_num_rows($query) > 1) 
         $this->result[$i][$key[$x]] = $r[$key[$x]]; 
        else if(mysql_num_rows($query) < 1) 
         $this->result = null; 
        else 
         $this->result[$key[$x]] = $r[$key[$x]]; 
       } 
      } 
     } 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

И это моя попытка добавить путь для использования присоединиться, но он никогда не возвращаются массивы.

public function select($table, $rows = '*', $join = null, $where = null, $order = null){ 
    // Create query from the variables passed to the function 
    $q = 'SELECT '.$rows.' FROM '.$table; 
    if($join != null){ 
     $q .= ' JOIN '.$join; 
    } 
    if($where != null){ 
     $q .= ' WHERE '.$where; 
    } 
    if($order != null){ 
     $q .= ' ORDER BY '.$order; 
    } 
    // Check to see if the table exists 
    if($this->tableExists($table)){ 
     // The table exists, run the query 
     $query = @mysql_query($q); 
     if($query){ 
      // If the query returns >= 1 assign the number of rows to numResults 
      $this->numResults = mysql_num_rows($query); 
      // Loop through the query results by the number of rows returned 
      for($i = 0; $i < $this->numResults; $i++){ 
       $r = mysql_fetch_array($query); 
       $key = array_keys($r); 
       for($x = 0; $x < count($key); $x++){ 
        // Sanitizes keys so only alphavalues are allowed 
        if(!is_int($key[$x])){ 
         if(mysql_num_rows($query) > 1){ 
          $this->result[$i][$key[$x]] = $r[$key[$x]]; 
         }else if(mysql_num_rows($query) < 1){ 
          $this->result = null; 
         }else{ 
          $this->result[$key[$x]] = $r[$key[$x]]; 
         } 
        } 
       } 
      } 
      return true; // Query was successful 
     }else{ 
      array_push($this->result,mysql_error()); 
      return false; // No rows where returned 
     } 
    }else{ 
     return false; // Table does not exist 
    } 
} 
+5

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). –

+1

Что такое ООП? –

+0

Вы проверили ваш запрос?. Try echo $ query; и выполнить для проверки правильности запроса или нет. –

ответ

4

, если вы звоните эту функцию, вы должны объявить его как это:

public function select($table, $rows, $where, $order) 
{ 
     // your statements 
} 

затем называют это так:

select('your_table','rows_you_want_select','where_conditions','column_you_want_to_sort'); 

С другой стороны, если вы пытаетесь сделать заявление о присоединении, заявить об этом следующим образом:

public function select($table, $rows, $join, $where, $order) 
    { 
      // your statements 
    } 

затем называют это так:

select('your_table','rows_you_want_select','join_conditions','where_conditions','column_you_want_to_sort'); 

Пример:

select('table1','id',' table2 on table1.id = table2.id','id = 1','id'); 

У вас еще есть много, чтобы узнать о FUNCTIONAL PROGRAMMING и, пожалуйста, избегать использования mysql_. Вместо этого используйте mysqli_ или PDO. Если вы действительно после ООП, я настоятельно рекомендую PDO.