2013-09-20 6 views
-3

У меня есть таблица. Это выглядит так:хочу получить данные из таблицы базы данных .... что мне делать

CREATE TABLE joke 
(sn INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
, jokes VARCHAR(255) NOT NULL UNIQUE 
); 

В настоящее время в таблице пять строк.

На моем сайте есть 5 textareas. Я хочу получить каждую шутку в текстовом поле.

Я сделал это таким образом, но я думаю, что это не очень хорошо. Есть ли другие способы?

<?php 
$sql=myql_query(SELECT jokes FROM tbl_jk WHERE sn=1;) 
?> 
<?php 
$sql1=myql_query(SELECT jokes FROM tbl_jk WHERE sn=2;) 
?> 
<textarea cols="10" rows="5"><?php echo $sql ?></textarea> 
<textarea cols="10" rows="5"><?php echo $sql1 ?></textarea> 
<textarea cols="10" rows="5">Jokes no3</textarea> 
<textarea cols="10" rows="5">Jokes no4</textarea> 
<textarea cols="10" rows="5">Jokes no5</textarea> 

Я написал вот так. таким образом, я должен написать 100 раз, если у меня есть 100 шуток, так что любая идея сюита для меня .. Я новичок так довольно просто плз

+2

[Первый шаг - узнать, как использовать MySQL с PHP, прочитав руководство.] (Http://www.php.net/manual/en/mysqli.quickstart.statements.php) Затем, если у вас есть проблема возникает, поскольку ваш код даже не является допустимым кодом. – Prix

+1

Вам нужно изучить основы PHP и MySQL, завершив начатые вами учебные уроки. Задавать вопросы, где люди должны кодоваться для вас, на самом деле не очень поможет, и если это код, который вы используете, он даже не работает, потому что это неправда PHP. Идея обучения заключается в том, что вы иногда приходите к выводу, что вы пробовали проб и ошибок. –

ответ

2
$db = new PDO("database", "username", "password"); 
$statement = $db->prepare("SELECT jokes FROM tbl_jk LIMIT 100"); 
$statement->execute(); 
foreach ($statement->fetchAll() as $joke) { 
    echo '<textarea cols="10" rows="5">' . $joke['jokes'] . '</textarea>'; 
} 

Поместите выше внутри РНР тегов и заменить входные PDO с вашими соответствующими. LIMIT можно забрать, если вы хотите все или только так много.

EDIT: Больше explination:

  • $db создает новое подключение к конкретной базе данных с помощью класса PHP PDO.

  • prepare записывает ваш первоначальный запрос, создается SELECT оператор в этом случае значение может быть помещен в дальнейшем (по execute()) с использованием методы :variable.

  • execute() может принимать входные сигналы для замены :variable заполнителей, но в противном случае просто выполнить запрос, который вы уже ранее подготовленные на существующий $db связи.

  • fetchAll() вернет все строки, которые были получены из предыдущего execute(), для каждого из них, к переменной $joke. Ваши столбцы могут быть доступны через $joke['column_name']

Есть много типов fetch() в PDO, читать на PDO здесь: http://php.net/manual/de/book.pdo.php

+0

Кроме того, попробуйте не использовать mysql_query(), это обесценивается. Примечание: http://www.php.net/manual/en/pdostatement.fetchall.php – thepratt

+0

Поскольку здесь есть новичок, вы должны расширить свой ответ и описать, что и почему вы сделали это таким образом. Но если вы просто хотите ловить рыбу за «легкие» вопросы, то я могу заверить вас, что вы тратите свое время. –

+0

Дополнительные пояснения добавлены. – thepratt

1

Попробуйте выбрать все шутки сразу вместо того, чтобы создать SQL заявление за каждую шутку. Вы можете ВЫБРАТЬ, что вы выбираете для выбора только первых 5 таблицы. Или, если у вас есть поле даты, вы можете сортировать их по ASC или DESC.

Затем используйте петлю и поместите ее в текстовое поле, которое вы хотите.

foreach ($statement->fetchAll() as $jk){ 
    echo '<textarea cols="10" rows="5">'. $jk .'</textarea>'; 
} 

Может быть, потому, что ваш новый для PHP и SQL я могу дать вам пример о выходе:

$jokes = Array(
       '1' => 'Joke 1', 
       '2' => 'Joke 2', 
       '3' => 'Joke 3', 
       '4' => 'Joke 4', 
       '5' => 'Joke 5' 
      ); 
    You should receive some array like this from you database, after that we loop over them all and we put them into the textarea. 

    foreach ($jokes as $jk){ 
     echo '<textarea cols="10" rows="5">'. $jk .'</textarea><br />'; 
    } 

Попробуйте использовать PDO вместо mysql_query. Что делает fetchAll?

PDOStatement :: fetchAll() возвращает массив, содержащий все остальных строк в наборе результатов. Массив представляет каждую строку как либо массив значений столбцов, либо объект со свойствами , соответствующий каждому имени столбца. Пустой массив возвращается, если - это нулевые результаты для извлечения, или FALSE при сбое.

Смежные вопросы