Member 13599752 Ответов: 2

Отображение нескольких строк данных из запроса в поиске с помощью PHP


нуб в беде - это действительно нуб! Я был бы признателен за любую возможную помощь!

поэтому я подключаюсь к своей базе данных,
У меня есть таблица с именем testable в MySQL, которая выглядит следующим образом:

testtable

номер(int) ______ _ _ клиент(строка)
1________________________Билл
2________________________Хэнк
3________________________Билл
4________________________Хэнк

и я хочу найти Хэнка и сделать массив, содержащий числа [2,4]
Все, что я могу сделать, это заставить его найти первую строку, и он создает массив, который является [2,'hank']

Что я уже пробовал:

Я попытался сделать php - скриптовый запрос mysqli следующим образом:
$sql="select*from testtable where customer='hank'";
$result=mysqli_query($db, $sql);
$row=mysqli_fetch_array($result, MYSQLI_NUM);
echo ($row[0]);
echo ($row[1]);
?>
но он только возвращается:
хэнк2
Я хочу, чтобы он вернулся.
24

Есть идеи?

2 Ответов

Рейтинг:
2

W∴ Balboos, GHB

Одна важная вещь, которую нужно сделать перед публикацией, - это убедиться, что все остальное в вашей настройке не является проблемой.

(1)Например, если вы запускаете свой запрос внутри интерфейса MySQL (поставляемого вместе с вашей установкой MySQL), что он показывает вам в качестве возвращаемых данных?

Другой способ рассмотреть это, немного специфичный для того, что вы написали, - это запрос, который более специфичен для ваших потребностей:

SELECT number FROM testtable WHERE customer='hank'
Это более эффективно, чем ваш запрос, который возвращает много посторонних данных. Как правило, я использую * только для быстрого перечисления всех столбцов, а затем спрашиваю именно то, что мне нужно. Точно так же, если бы я ожидал более одного имени, я бы использовал:
SELECT number, customer FROM testtable WHERE customer='hank'
Более того, поскольку php чувствителен к регистру, текст, который вы вернули с помощью*, - это все, что происходит с именами полей, но если вы их укажете, то имена полей будут теми, которые вы укажете.

Контроль должен быть вашим, когда вы кодируете ... или сожаления будут вашими.


Рейтинг:
0

EZW

При извлечении нескольких результатов из базы данных необходимо переместить указатель вперед к следующим результатам после работы с первым набором результатов. Обычно это делается с помощью цикла "while".

$sql = "SELECT * FROM testtable WHERE customer='hank'";
$result = mysqli_query($db, $sql);

while($row = mysqli_fetch_array($result, MYSQLI_NUM))
{
    echo ($row[0]);  // The number
    echo ($row[1]);  // The customer
}


строка[0] - это первый столбец, полученный в первом наборе результатов
строка[1] - это второй столбец, полученный во втором наборе результатов.

Это означает, что строка[0] должна быть номером, а строка[1] - клиентом.

Вы можете попробовать ассоциативную выборку массива.
$sql = "SELECT * FROM testtable WHERE customer='hank'";
$result = mysqli_query($db, $sql);

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
    echo ($row['number']);  // The number
    echo ($row['customer']);  // The customer
}