行,
在这里疯狂 - 我想一次显示一个数组的每一行(来自Mysql查询的结果)。我把它们放在while循环中,所有行都立刻显示出来。然后我被建议放弃while循环并使用会话。
我花了好几个小时试图让这个工作 - 使用本网站上的评论和PHP教程,但我很困惑,需要帮助。
情形:
例如。 Mysql查询: 从MyTable中选择col1,col2,col3,col4。 (MyTable有大约10行)
显示
col1(row1)
col2(row1)
col3(row1)
col4(row1)
刷新浏览器(或预先点击“提交”按钮)
显示
col1(第2行)
col2(第2行)
col3(第2行)
col4(第2行)
刷新/提交....等等,直到显示所有行。
我相信我必须使用$_SESSION
变量 - 我尝试 - 在每次刷新时 - 设置这样的变量
$_SESSION['column1']= $rownum;
$_SESSION['column2']= $rownum;
$_SESSION['column3']= $rownum;
$_SESSION['column4']= $rownum;
但我没有正确显示列。
请帮我解决这个问题 - 如果可能,请使用代码示例 - 包括会话启动和刷新或其他可能需要的内容。
非常感谢提前
答案 0 :(得分:0)
在使用会话之前添加session_start();
<?php
session_start();
$_SESSION['pop'] = 12;
echo $_SESSION['pop'];
?>
答案 1 :(得分:0)
有几种方法可以做到这一点。
首先是mysql偏移(没有得到所有行但需要部分(你可能有10000行 - 一次都会出问题)。)
如果您有相当多的记录,或者您想为未来做好准备,可以使用第一个示例,因为它可以处理大型记录组。
如果您有一小组记录,或者您对数据库预脚本执行进行了缓存,则可以使用第二个示例。
示例#1:
MySql -
SELECT col1, col2, col3, col4 FROM MyTable LIMIT 4 OFFSET 0
php -
session_start();
$position = isset($_SESSION['display_position']) ? $_SESSION['display_position'] : 0;
$limit = 4;
if(empty($position))
$_SESSION['display_position'] = 0;
$sql = 'SELECT col1, col2, col3, col4 FROM MyTable LIMIT '.$limit.' OFFSET '.$position;
$result = mysql_query($sql);
// We don't want to fetch non existen resource
if($result)
{
while($rows = mysql_fetch_array($result))
{
echo $rows;
}
}
else
{
echo 'No more records';
exit;
}
// Update session for next run
$_SESSION['display_position'] = $position + $limit;
其他可能是例如数组循环并在$ _SESSION中存储位置。
示例#2:
Mysql -
SELECT col1, col2, col3, col4 FROM MyTable
php -
session_start();
$records = array('row1', 'row2', 'row3', 'row4', 'row5', 'row6', 'row7', 'row8', 'row9', 'row10');
$position = isset($_SESSION['display_position']) ? $_SESSION['display_position'] : 0;
$limit = 4;
if(empty($position))
$_SESSION['display_position'] = 0;
if(count($records) < $position)
{
echo 'No more records';
exit;
}
for($i = $position; $i < $position + $limit; $i++)
{
// Display rows
if(isset($records[$i]))
echo $records[$i];
}
// Update session for next run
$_SESSION['display_position'] = $position + $limit;
注意:调整$limit
变量以满足您的需求。
您的具体用例(已更新):
session_start();
$records = array(
array(
'col1' => 'col1valuerow1',
'col2' => 'col2valuerow1',
'col3' => 'col3valuerow1',
'col4' => 'col4valuerow1'
),
array(
'col1' => 'col1valuerow2',
'col2' => 'col2valuerow2',
'col3' => 'col3valuerow2',
'col4' => 'col4valuerow2'
),
array(
'col1' => 'col1valuerow3',
'col2' => 'col2valuerow3',
'col3' => 'col3valuerow3',
'col4' => 'col4valuerow3'
),
array(
'col1' => 'col1valuerow4',
'col2' => 'col2valuerow4',
'col3' => 'col3valuerow4',
'col4' => 'col4valuerow4'
),
array(
'col1' => 'col1valuerow5',
'col2' => 'col2valuerow5',
'col3' => 'col3valuerow5',
'col4' => 'col4valuerow5'
),
array(
'col1' => 'col1valuerow6',
'col2' => 'col2valuerow6',
'col3' => 'col3valuerow6',
'col4' => 'col4valuerow6'
),
array(
'col1' => 'col1valuerow7',
'col2' => 'col2valuerow7',
'col3' => 'col3valuerow7',
'col4' => 'col4valuerow7'
),
array(
'col1' => 'col1valuerow8',
'col2' => 'col2valuerow8',
'col3' => 'col3valuerow8',
'col4' => 'col4valuerow8'
),
array(
'col1' => 'col1valuerow9',
'col2' => 'col2valuerow9',
'col3' => 'col3valuerow9',
'col4' => 'col4valuerow9'
),
array(
'col1' => 'col1valuerow10',
'col2' => 'col2valuerow10',
'col3' => 'col3valuerow10',
'col4' => 'col4valuerow10'
)
);
$position = isset($_SESSION['display_position']) ? $_SESSION['display_position'] : 0;
$limit = 1;
if(empty($position))
$_SESSION['display_position'] = 0;
if(count($records) < $position)
{
echo 'No more records';
exit;
}
for($i = $position; $i < $position + $limit; $i++)
{
// Display rows
if(isset($records[$i])){
echo $records[$i]['col1'] . '<br/>';
echo $records[$i]['col2'] . '<br/>';
echo $records[$i]['col3'] . '<br/>';
echo $records[$i]['col4'] . '<br/>';
}
}
// Update session for next run
$_SESSION['display_position'] = $position + $limit;
答案 2 :(得分:0)
如果您还没有主键列,请将其添加到表中。然后,您可以使用以下内容:
<?php
session_start();
if(isset($_SESSION["id"])){
$_SESSION["id"] = $_SESSION["id"] + 1;
}
else{
$_SESSION["id"] = 1;
}
$id = $_SESSION["id"];
//Your mysql connection
$results = mysql_query("SELECT *
FROM urtable
WHERE id = $id");
while($row = mysql_fetch_array($results)){
echo $row["urcol1"];
echo "<br>";
echo $row["urcol2"];
echo "<br><br>";
}
?>