我很难理解我用来从mysql数据库中检索结果的一行代码。
我用
连接数据库<?php
try
{
$pdo = new PDO('mysql:host=localhost;dbname=****', '****',
'****');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');
}
catch (PDOException $e)
{
$error = 'Unable to connect to the database server.' . $e->getMessage;
echo $error;
exit();
}
这很好。连接有效。
使用此代码来检索结果....
$sql = 'SELECT joketext FROM joke';
$results = $pdo->query($sql);
这也没关系,但后来我使用foreach循环来循环遍历结果集......
foreach ($results as $result){
$jokes[] = $result['joketext'];
}
然后另一个foreach循环玩$笑话......
foreach ($jokes as $joke) {
echo $joke;
}
现在这一切都有效,它显示了我想从mysql表中获得的笑话文字。但是我不理解这条线......
$jokes[] = $result['joketext'];
这是否意味着我将结果集分配给数组? $ jokes [] =是什么意思?为什么我要这样做?
我以为我正在从数据库表中检索文本字符串。该表具有id,joketext,jokedate和authorid作为列。但是,如果我只选择joketext列肯定会检索所有joketext条目的列表,因此我可以循环使用foreach回显结果?
答案 0 :(得分:2)
$jokes[]
语法将笑话文本字符串附加到$jokes
数组。如果数组不存在,则会创建它。
与做法相同:
array_push($jokes, $result['joketext']);
如果您不需要创建新数组,可以直接在$results
foreach中使用笑话文字,如果您愿意的话。
答案 1 :(得分:0)
$jokes[] =
向数组附加一个新值,与执行$jokes[count($jokes)]
相同(不完全正确但是解释它的简单方法)。
从技术上讲,你没有 将所有值都放在一个新数组中,你可以使用原始循环。
array_push
具有相同的功能,您可以阅读here
答案 2 :(得分:0)
您的查询只会选择一列joketext
,因此您的结果集中不会包含任何其他列数据。
使用$jokes[] = ..
是一种为$jokes
数组中的新元素赋值的简便方法。你不一定需要这样做。它通常是这样做的,以便您可以在以后根据需要在多个位置使用数据。或者,您可以每次直接使用结果集。这并不常见,因为结果集是一个包含的内容超过实际需要的对象或资源。但是,如果您只是想立即输出笑话文本,那么您可以跳过将它放入一个单独的数组中,并在第一个循环中只是echo $result['joketext'];
答案 3 :(得分:0)
如果我理解正确,那么我相信你是对的。不需要第二个foreach
,您可以在第一个echo
期间$result['joketext']
foreach
并完全跳过第二个foreach
。
所以删除第二个foreach ($results as $result){
echo( $result['joketext'] );
}
并按如下方式编辑第一个:
{{1}}