Загрузить строку из MySQL в зависимости от php? Id = * - PullRequest
2 голосов
/ 07 января 2011

Я довольно новичок в PHP и MySQL (опыт работы с другими языками).В основном я хочу загрузить данные из строки относительно их идентификатора, указанного в URL.Например, загрузите 3-ю строку, когда «index.php? Id = 3»

Вот что мне удалось сделать до сих пор: http://pastie.org/1436865

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

Спасибо, ребята

Ответы [ 4 ]

1 голос
/ 07 января 2011

Основываясь на всех этих не очень понятных, но работающих примерах, вы можете сделать функцию :

function getRow($query){
  $res = mysql_query($query);
  if (!$res) {
    trigger_error(mysql_error." in ".$query);
    return array();
  }
  $row = mysql_fetch_assoc($res));
  if ($row) return $row;
  return array();
}

, затем сохранить ее в некотором библиотечном файле и затем включить этот файлваш сценарий и вызов только одной строкой

$data = getRow("SELECT * FROM tablename WHERE id=".intval($_GET['id']));

Также обратите внимание на примечание Освальда, это очень важно.Вы не можете и не должны полагаться на относительную позицию строки, поскольку ее вообще нет.Таблица БД - это куча, а не упорядоченный список.Используйте определенное уникальное значение поля для адресации определенной строки.Это путь, чтобы пойти

1 голос
/ 07 января 2011

Деталь id=3... называется Строка запроса , и вы можете получить к ней доступ с помощью массива $_GET (см. PHP: Предопределенные переменные ).

BTW: Нет смысла загружать 3-ю строку из таблицы базы данных, поскольку строки в таблице базы данных не имеют порядка (поэтому вместо списка строк набор записей является более подходящей аналогией в этом случае),Записи обычно идентифицируются с помощью так называемого первичного ключа, и вы должны убедиться, что таблицы базы данных имеют первичный ключ.

1 голос
/ 07 января 2011

Или, если вы предпочитаете массив вместо объектов, попробуйте что-то вроде этого:

$query="SELECT * FROM table WHERE id=".(int)$_GET['id']." LIMIT 1";
$result=mysql_query($query);

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo $row['column'];
}

или если вам нравятся проиндексированные столбцы

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    echo $row[0];
}

или оба (имена столбцов и индексы):

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    echo $row[0].'-'.$row['column'];
}

Вы даже можете использовать это, если вам нужен только один ряд:

$result = mysql_query("SELECT * FROM table WHERE id=".(int)$_GET['id']);
$row = mysql_fetch_row($result);
echo $row[0];
0 голосов
/ 07 января 2011

Самый простой способ это

$id = (int) $_GET['id'];;
$result = mysql_query("SELECT * FROM tablename WHERE id=".$id);
while($res = mysql_fetch_object($result)){
    echo $res->columnname;
}

Конечно, вы должны проверить входные параметры и т. Д. Это только подход.

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