Показать каждую строку столбцов информации php и sql - PullRequest
0 голосов
/ 28 мая 2019

Я хочу напечатать значения пользовательских столбцов для всех строк, у меня есть файл разработчика sql, я имею в виду, что я хочу напечатать некоторые столбцы каждой строки, если, например, моя таблица называется клиентом и имеет имя, имя и адрес электронной почты Я хочу напечатать каждое имя клиента, имя и адрес электронной почты, которые я нашел, как сделать это с MySQL, но я хочу сделать это с PHP и SQL разработчика.

Код, который я показал, показывает только первое имя пользователя, а не остальные имена и другие столбцы других пользователей.

<?php
function clientes($conexion) {
    $consulta = "SELECT NOMBRE FROM CLIENTE";
    $stmt = $conexion -> prepare($consulta);
    $stmt -> execute();
    return $stmt -> fetchColumn();
}

echo clientes($conexion);
?>

Ответы [ 3 ]

2 голосов
/ 28 мая 2019

Вы получаете только один столбец, поскольку вы явно запрашиваете только один столбец (используя fetchColumn()) и тот факт, что вы только сказали SQL возвращать один единственный столбец.

Измените запрос:

// Replace column1 etc to the real column names
SELECT column1, column2, column3 FROM CLIENTE

Затем вместо использования fetchColumn() (который предназначен для извлечения один столбец), используйте:

return $stmt->fetchAll(PDO::FETCH_ASSOC);

и вы должны получить массив, содержащий ассоциативные массивы (по одному на строку) со всеми тремя столбцами.

Однако у вас есть еще одна проблема:

echo clientes($conexion);

Поскольку теперь вы возвращаете массивВы не можете просто повторить это сразу.Если вы это сделаете, вы получите предупреждение о «преобразовании массива в строку».Вам нужно перебрать массив и вывести данные так, как вы хотите:

$data = clientes($conexion);

// Again, change the column names
foreach ($data as $row) {
    echo $row['column1'];
    echo $row['column2'];
    echo $row['column3'];
}

Это выведет все данные.Вы можете принять решение о макете, хотя.

0 голосов
/ 28 мая 2019

Я хочу напечатать каждое найденное имя клиента, имя и электронную почту

Затем вы должны использовать fetchall (), чтобы получить все результаты в виде массива, затем выполнить итерацию по всему массиву и распечатать каждый элемент массива.

function clientes($conexion) {
    $stmt = $conexion ->query("SELECT name,subname,email FROM CLIENTE")->fetchall();

  foreach($stmt as $row){

    echo "Client Name : ".$row['name']."<br>";
    echo "Client subname : ".$row['subname']."<br>";
    echo "Client email : ".$row['email']."<br>";
  }
}

clientes($conexion);
?>
0 голосов
/ 28 мая 2019

Для получения всех столбцов

Вам необходимо обратиться к вашему SQL-запросу иначе, чтобы он работал, вероятно.На данный момент вы ищете только поле nombre.Попробуйте изменить его на:

  $consulta = "SELECT * FROM CLIENTE";

Звездочкой вы называете все поля в таблице cliente.Для производительности вам следует назвать только те поля, которые вам нужны.Это будет выглядеть так:

  $consulta = "SELECT nombre,dni,sexo FROM CLIENTE";

Для получения всех строк

В данный момент вы просто адресуете одну строку здесь.Вам нужно изменить код на

return $stmt ->fetchAll();
...