我有一张桌子。它看起来像这样:
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
答案 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
连接上准备的查询。
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。