PHP中的session_start()

时间:2011-10-14 15:18:39

标签: php

<?php session_start();?>
    HTML
<?php 
    // code for mysql...
    $number = mysql_num_rows($result);
    // it gets the correct value. Tested with echo.
?>
    HTML
<?php
$i=0;
while ($number > $i) 
{ 
    $id = mysql_result($result,$i,"Id");
    $address = mysql_result($result,$i,"address");
    $title = mysql_result($result,$i,"title");
    $_SESSION[i] = $id;
}
?>
<option value="<?php echo"$_SESSION[i]"; ?>">
<?php echo"$address $title"; ?>
</option>
<?php
$i++;
?>

此代码只添加一个元素到选项。如果我评论session_start()然后 所有值都插入到select中。但如果我不使用session_start那么我就不能 验证用户是否已登录。

我的代码发生了什么变化?

2 个答案:

答案 0 :(得分:4)

我认为你的意思是$i数组中的$_SESSION[],而不是常数i

$_SESSION[i] = $id;
?><OPTION value="<?php echo"$_SESSION[i]"; ?>">

// Should be
$_SESSION[$i] = $id;
?><OPTION value="<?php echo"$_SESSION[$i]"; ?>">

PHP会将未知常量i转换为字符串"i",它假设您有意。我真的认为你打算使用变量$i

答案 1 :(得分:0)

我可以建议使用mysql_fetch_array / mysql_fetch_assoc / mysql_fetch_row在一次调用中获取整个行,而不是每行调用三次mysql_result吗?然后您可以访问每个元素,如:

$row = mysql_fetch_array( $result);
$id = $row['Id'];
$address = $row['address'];

PHP手册中有一个关于如何循环从数据库返回的行数的示例。

http://us3.php.net/manual/en/function.mysql-fetch-array.php