想从数据库表中获取数据....我该怎么办

时间:2013-09-20 09:16:00

标签: php mysql

我有一张桌子。它看起来像这样:

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

表格中目前有五行。

在我的网页上有5个textareas。我想把每个笑话都带到textarea。

我是通过这种方式完成的,但我认为这不是一个好方法。还有其他方法吗?

<?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次,所以对我来说有任何套件的想法..我是初学者,所以非常简单plz

2 个答案:

答案 0 :(得分: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>';
}

将上述内容放在php标签内,并将PDO输入替换为各自的PDO输入。如果您想要全部或只有这么多,LIMIT可以被带走。

编辑:更多探索:

  • $db使用PHP PDO类创建与特定数据库的新连接。

  • prepare会记录您的初始查询,在这种情况下为SELECT语句,可以使用execute()方法在以后(:variable)放置值。

  • execute()可以接受替换:variable占位符的输入,但只会执行您之前在现有$db连接上准备的查询。

    < / LI>
  • fetchAll()会将之前execute()设置中检索到的所有行返回到变量$joke。 然后可以通过$joke['column_name']

  • 访问您的列

PDO中有多种类型的fetch(),请在此处阅读PDO:http://php.net/manual/de/book.pdo.php

答案 1 :(得分:1)

尝试一次选择所有笑话,而不是为每个笑话创建一个SQL语句。 您可以限制选择仅选择表格的前5个。 或者,如果您有日期字段,则可以对它们进行ASC或DESC排序。

$sql = "SELECT jokes FROM tbl_jk LIMIT 0,5";

然后使用循环然后放入你想要的textarea。

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。