Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么会导致我的MySQL查询在两个结果之后挂起?_Php_Mysql - Fatal编程技术网

Php 什么会导致我的MySQL查询在两个结果之后挂起?

Php 什么会导致我的MySQL查询在两个结果之后挂起?,php,mysql,Php,Mysql,我有一个简单的问题,我一生都无法在我的页面上打印出来: $results = mysql_query("SELECT * FROM andyasks ORDER BY date"); $test = mysql_fetch_array($results, MYSQL_BOTH); foreach ($test as $row){ print($row[questions]); } 这输出的内容(在我看来是不可预测的)仅仅是每个表字段的第一个字母,仅用于前两行。因此,一个75行的表格x5

我有一个简单的问题,我一生都无法在我的页面上打印出来:

$results = mysql_query("SELECT * FROM andyasks ORDER BY date");
$test = mysql_fetch_array($results, MYSQL_BOTH);
foreach ($test as $row){
    print($row[questions]);
}
这输出的内容(在我看来是不可预测的)仅仅是每个表字段的第一个字母,仅用于前两行。因此,一个75行的表格x5列应该显示75个“问题”,但它显示的是“00WWFFAA00”,这是前两行每个单元格的第一个字母。发生了什么事?

试试这个

$results = mysql_query("SELECT * FROM andyasks ORDER BY date");

while($row = mysql_fetch_array($results))
{
    print($row["questions"]);
}
原因是,您将只使用

$test = mysql_fetch_array($results, MYSQL_BOTH);

这就是为什么你需要让它在一段时间内循环。它获取一行,当没有更多行时while循环将终止(因为当没有更多行时它返回false)。

只是为了解释代码的错误

您的代码只提取
$test
变量的第一行。这个数组包含每个列,按索引和名称两次键入(这就是
MYSQL\u两者的作用)。如果插入
print\r($test)在循环之前,它将转储数组的内容,以便您可以看到发生了什么

循环所做的是遍历每一列,并将其值作为字符串提取到
$row
中。当您对包含字符串的变量使用数组语法(即
$row[“questions”]
)时,PHP会在您选择的索引处提取一个字符。因为
“question”
不是一个数字,所以它的计算结果为0,这就是为什么会得到每列的第一个字母


Ólafur Waage具有正确的语法,适合您尝试执行的操作。

能否显示andyasks的表格布局?在我看来,这段代码应该做的是获取“andyasks”表中的所有行,然后在一个长字符串中打印出每行的“questions”字段的值。请注意,它实际上应该是$row['questions'],但如果它不是一个可识别的常量,PHP会将问题转换为字符串。主键实际上是“questions”字段,因为我一直在使用“insert ignore”来避免在该字段中重复结果。(我定期运行Twitter查询并将结果保存在此表中)我感谢您的解释;我总是想知道为什么,而不是仅仅剪切/粘贴。当做