Получить однострочный результат из MySQL - PullRequest
1 голос
/ 19 декабря 2010

Я пытаюсь создать простой класс базы данных в PHP и использую MySQL.

Теперь я застрял, я не могу понять, как я могу показать один результат строки из базы данных,Я решил, как я могу получить несколько строк из базы данных, но теперь я пытаюсь показать только одну, такую ​​как имя пользователя, адрес электронной почты, уровень, reg_date.

Мой код:

class Database {

  public $mysql;

  function __construct()
  {
    $this->mysql = new mysqli(host, user, password, db) or die('There was a problem connecting to the db');
  }

  function multiLine($sql)
  {
    $this->mysql->query("SET NAMES 'utf8'");
    $this->mysql->query("SET CHARACTER SET 'utf8'");

    if(($result = $this->mysql->query($sql)) != NULL) {
      $x = array();
      while($row = $result->fetch_array()) {
        $x[] = $row;
      }
      return $x;
    }
    else {
      echo $this->mysql->error;
    }
  }


  function singleLine($sql)
  {

      $one = array();
      if(($one = $this->mysql->query($sql)) != NULL)
      {
          $one = $result->fetch_array(); // Error here
      }

      return $one;
  }

  function __destruct() {
    // close out the database connection;
    $this->mysql->close();
  }
}

моя функция multiLine работает, и я использую ее так:

$db = new Database();
$sql = 'SELECT * FROM users ORDER BY id DESC';

$response = $db->multiLine($sql);

<?php foreach($response as $r) : ?>
<p>ID: <?php echo $r['id']; ?></p>
<p>Username: <?php echo $r['username']; ?></p>
<?php endforeach; ?>

Так может кто-нибудь подсказать, как решить проблему?ИЛИ, может быть, у кого-то есть ссылка на отличный учебник по созданию класса базы данных в PHP.

Ответы [ 4 ]

1 голос
/ 19 декабря 2010
if(($one = $this->mysql->query($sql)) != NULL)

должно быть

if(($result = $this->mysql->query($sql)) != NULL)
0 голосов
/ 31 марта 2018

Получите результат одной строки из MySQL:

$val = fetch_one_record("SELECT some_field FROM some_table LIMIT 1);

function fetch_one_record($sql) {
    $conn = db_connect();
    $result = array_shift($conn->query($sql)->fetch_assoc());
    $conn->close();
    return $result;
}
0 голосов
/ 19 декабря 2010

Чтобы вывести результат в одну строку, LIMIT 1 в конце запроса сделает это.

Если вы хотите проверить, является ли результат одной строкой, перед отправкой его в multiLine () или singleLine (), mysql_num_rows сообщит вам, сколько строк было в вашем запросе.

Я не уверен, почему вы хотите обрабатывать их по-разному, потому что код, который его вызывает, должен будет проверить, возвращен ли он массив или объект. Возвращение должно быть последовательным.

0 голосов
/ 19 декабря 2010

Я не могу понять, в чем проблема, почему Вы просто не добавляете LIMIT 1 к запросу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...