2014-01-05 3 views
0

Я пытаюсь пройти через всю эту таблицу и эхо из всех писемSQL не Выбор всех строк

Вот мой запрос

ВЫБРАТЬ meta_value ОТ wp_usermeta WHERE meta_key = «user_email»

Вот картина, когда я исполню ее в PhpMyAdmin

enter image description here

А вот выход, когда я бегу мой скрипт

array(8) { 
    [0]=> 
    string(3) "781" 
    ["umeta_id"]=> 
    string(3) "781" 
    [1]=> 
    string(2) "36" 
    ["user_id"]=> 
    string(2) "36" 
    [2]=> 
    string(10) "user_email" 
    ["meta_key"]=> 
    string(10) "user_email" 
    [3]=> 
    string(22) "[email protected]" 
    ["meta_value"]=> 
    string(22) "[email protected]" 
} 

Вы можете ясно видеть, что есть способ более 8 строк, я не могу понять это любой вклад будет весьма признателен!

$data = $db->fetch_array("SELECT * FROM `wp_usermeta` WHERE `meta_key`='user_email'"); 
var_dump($data); 

БД Класс:

<?php 
class DB { 

    function __construct() { 
     global $dbase; 
     $this->mysqli = new mysqli($dbase['host'], $dbase['user'], $dbase['pass'], $dbase['name']); 
     if($this->mysql->connect_error) { 
      die('Unable to Connect to Database'); 
     } 
    } 
    function query($i) { 
     return $this->mysqli->query($i); 
    } 
    function fetch_array($i) { 
     if(!is_object($i)) { 
      // create $i as an object! 
      $i = $this->query($i); 
     } 
     return $i->fetch_array(); 
    } 
    function num($i) { 
     if(!is_object($i)) { 
      // create $i as an object! 
      $i = $this->query($i); 
     } 
     return $i->num_rows; 
    } 
} 
?> 
+0

Вы гений, если вы покажете ваш PHP скрипт. – CentaurWarchief

+0

Обновлено сообщение со сценарием – Mario

ответ

1

$db->fetch_array возвращает только первую строку результата. Вы должны использовать другой метод для циклического перемещения по всем выбранным строкам, хотя вам придется выяснить, какой именно метод находится самостоятельно, так как мы не знаем ваш класс базы данных (из которых $ db является экземпляром).

редактировать: Следующий код должен работать:

$result = $db->query(your query); 
while ($row = $result->fetch_array()) { 
    // do something with $row 
} 
+0

Я добавил свой класс DB к сообщению – Mario

+0

Большое вам спасибо! Это сделал трюк! Есть ли способ получить 2 meta_value от разных значений, например, если мне нужна строка first_name также – Mario

+0

Вам, вероятно, придется захватить эту информацию из другой таблицы. Вы можете сделать это в том же запросе, если хотите, например. 'SELECT table1.name, table2.email FROM table1, table2 WHERE table1.id = AND table2.id = table1.id' (Синтаксис может быть немного другим, проверьте официальную документацию) – Njol

Смежные вопросы