#php #mysql #sql
#php #mysql #sql
Вопрос:
Просто играя с запросами на PHP, я столкнулся с некоторыми проблемами. Название этого поста объясняет проблему. Когда я запускаю запрос в phpMyAdmin, результаты будут отличаться от результатов, которые я получаю в самой программе PHP. Вот код, который я использую. Извините, если это выглядит немного странно, я вырезал и вставлял вещи повсюду в отчаянной попытке заставить его работать.
$connect = array('username'=>'root', 'host'=>'127.0.0.1', 'password'=>'');
$link = mysql_connect($connect['host'], $connect['username'], $connect['password']) or die('Error creating link: ' . mysql_error());
mysql_select_db('testing_pages', $link) or die('Error connecting to database: ' . mysql_error());
$sql = "SELECT `name` FROM `names`";
$query = mysql_query($sql, $link) or die('Query Failed! Check error:<br/><br/>' . mysql_error());
$query_2 = mysql_fetch_array($query);
$query = $query_2;
$loop = count($query);
$count = 0;
while($count <= $loop) {
echo $query[$count] . '<br/>';
$count ;
}
видите ли, я пытаюсь заставить его прочитать все имена, поместить их в массив, а затем распечатать их с помощью цикла while. Но, похоже, он возвращает только 1 результат, и это первое имя в базе данных. но когда я запускаю ТОЧНЫЙ запрос через phpmyadmin, он возвращает каждое имя в базе данных… Еще одна странная вещь, при использовании функции ‘count’ для получения количества значений в массиве утверждается, что существует 3 значения, но во время цикла он просто выводит первое имя, а затем для вторых двух возвращает ‘Неопределенный индекс’.
Надеюсь, я не кажусь новичком прямо сейчас… И я надеюсь, что я все хорошо объяснил. Спасибо всем, кто может помочь.
Комментарии:
1. Почему вы перезаписываете
$query
значение$query_2
?2. 1) Вам нужно прекратить использовать устаревшее
mysql
расширение. 2) В вашем запросе нет ничего плохого, похоже, у вас есть непонимание того, как получать результаты из результирующего набора. 3) Вам нужно извлекать результаты базы данных в цикле, а не одинmysql_fetch_array()
. По сути, сейчас вы получаете только одно значение.3. Да, я понимаю. Но я в замешательстве. Почему mysql устарел? Почему от него как бы «избавляются»?
Ответ №1:
mysql_fetch_array
извлекает одну строку в виде массива. Вот документы.
И обратите внимание на это большое предупреждающее сообщение в верхней части страницы, когда вы читаете документы…
Комментарии:
1. ТАК что, я думаю, мне не следует использовать mysql_fetch_array?
2. подождите, но это меня смущает, почему все эти функции удаляются?
3. Я знаю, что есть некоторые полезные функции, которые
mysql_
функции не поддерживают, но помимо этого я не знаю. В любом случае эти функции исчезнут, поэтому вам не следует их использовать, потому что на серверах в будущем их не будет.