2015-04-23 32 views
0

我正在一个小型应用程序中,我需要使用数组作为数据库。我有一个名为index.php的php文件中包含名称和年龄字段的表单。我的index.php看起来是这样的:我想使用数组作为数据库

<pre><code> 
<?php 
session_start(); 
$_SESSION['var'] = 0; 
?> 

<html>  
<body> 
<form action="weloome.php" method="post"> 
    Name : <input type="text" name="name"/><br/> 
    Age : <input type="text" name="age"/><br/> 
    <input type="submit" name="submit" value="Submit" onsubmit= 
    "<?php $_SESSION['var'] += 1; ?>/>"> 
</form> 
</body> 
</html> 
</code> 

在这段代码中我使用的会话变量var这沾到形式的onsubmit事件增量。它获得增量,因为我希望所有值都存储在名为db_array()的数组中。

这是第二个文件的welcome.php

<?php 
    session_start(); 
    $db_array[$_SESSION['var']][0] = $_POST['name']; 
    $db_array[$_SESSION['var']][1] = $_POST['age']; 
    print_r($db_array); 
?> 
<a href="index.php">Want to Add more Record? Click Here</a> 

但问题是,$_SESSION['var'] = 0;零每次 初始化时对上述页面链接用户点击。这就是为什么只显示最后一条记录,因为数组被覆盖。任何解决这个问题的方法?

在此先感谢。

+0

验证如果你的$ _SESSION已经有一个值,如果是,请不要'$ _SESSION ['var'] = 0;' –

回答

1

添加一个条件:

if (!isset($_SESSION["var"]) { 
    $_SESSION["var"] = 0; 
} 

这只会初始化,只有当它尚未初始化之前的会话。

+0

我们遇到了竞争条件:)并提出了确切的答案。 – nilobarp

+0

我想这意味着是正确的! :) – serenhopy

0

在这里你去:如果你的变量是空的,它会与零初始化,否则将保持不变;-)

<?php 
if(!$_SESSION['var']) 
    $_SESSION['var'] = 0; 
?> 
0

您可以使用此检查,

if(session_id()=="") 
{ 
    session_start(); 
    $_SESSION['var']=0; 
} 

这只会在未找到会话时执行。

1

是weloome正确的名字?是一个错字?

+0

不错... ;-)哈哈哈+1对于那个伴侣 –

0

在PHP版本5.4 *及更高版本中,这是查看会话是否已启动的最有效方式。

if(session_status() !== PHP_SESSION_ACTIVE) 
{ 
    // session is not started yet 
    session_start(); 
} 
0

,如果你想进一步发展这一点,你可以使用序列化功能,将其转换成东西,你可以存储在一个cookie或许,或者文件或数据库..

的连载函数将数组转换为可以存储的字符串。有点像json。

如果您还有其他问题,有没有办法通知我?我可以关注像facebook/twitter上的人吗?

相关问题