Получение определенных данных поля MySQL в PHP на основе значения первичного ключа вместо номера строки

Я пытаюсь найти правильный способ извлечения определенных данных поля из базы данных MySQL и ссылки на них на веб-странице, используя первичный ключ (INT) в строке данных вместо номера строки. мы пытались:

$sql = "SELECT * FROM ourTable";
$result = mysql_result($sql, $con);
echo mysql_results($sql,$con);
echo mysql_result($result, 2, "pageTitle");
echo "<br />";
echo mysql_result($result, 2, "pageDate");`

Но это возвращает значения на основе номера строки. Вместо этого мы хотели бы сделать ссылку на pageID в нашей базе данных, чтобы заполнить информацию pageTitle и pageDate.

(Переменная $con упоминается перед этим блоком)

так скажем, в моей базе данных у меня есть:

pageID pageTitle pageDate
001 Страница 1 1885
002 Страница 2 1976
003 Страница 3 1776

Например, на веб-странице данные будут напечатаны следующим образом:

Название: Page1
Дата: 1885

Заранее спасибо за любую помощь.


person bigorangecat1987    schedule 24.10.2011    source источник
comment
Вам нужна только одна строка? Если это так, вы должны изменить свой запрос на SELECT * FROM ourTable WHERE pageID=1885 (конечно, заменив любое значение, которое вам нужно).   -  person Michael Mior    schedule 25.10.2011


Ответы (1)


Ваш запрос выбирает все строки из таблицы. Позже вы извлекаете строку по ее положению в массиве результатов. Однако вам не следует никогда делать какие-либо предположения о порядке сохранения или возврата строк, если только вы не используете ключевое слово ORDER BY. В противном случае вам не гарантируется, что ваши строки будут возвращены в том порядке, в котором вы их вставили.

Как сказал Майкл Миор, вы можете использовать ключевое слово WHERE для выбора строки на основе значения столбца.

$id = "001";
$sql = "SELECT * FROM ourTable WHERE pageID='$id'";
$result = mysql_result($sql, $con);

// Since you're selecting based on a unique key, you'll get only 0 or 1 rows
if( mysql_num_rows($result) == 1)
{
  // Parse the result
  echo mysql_result($result, 0, "pageTitle");
  echo "<br />";
  echo mysql_result($result, 0, "pageDate");
}

Изменить, уточнение: первичный ключ по определению уникален.

person Anson    schedule 24.10.2011
comment
Это в основном то, что я ищу, но это не совсем работает. Ошибки не возвращаются, но там, где должна быть напечатана информация pageTitle и pageDate, она просто пуста. - person bigorangecat1987; 25.10.2011
comment
Вы попадаете в блок if в моем коде? То есть вы получаете одну строку в наборе результатов? Кроме того, если pageID хранится в виде строки, вам нужно указать строку поиска в своем запросе. Я забыл это сделать, но я просто отредактировал свой ответ и исправил это. - person Anson; 25.10.2011