2016-07-24 206 views
0

我试图会话变量传递到下一个页面,但的index.php我已经在foreach($_SESSION['result'] as $row)得到一个错误未定义的索引。我可以知道什么是错的吗?传递会话变量到另一页

<?php 
session_start(); 
$search = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']); 
$search = $db->real_escape_string($search); 

if (strlen($search) >= 1 && $search !== ' ') { 
    $query = 'SELECT * FROM tablename WHERE name LIKE "%'.$search.'%"'; 
    $result = $db->query($query) or trigger_error($db->error."[$query]"); 


    while($results = $result->fetch_array()) { 
     $resultArray[] = $results; 
    } 

    if (isset($resultArray)) { 
     foreach ($resultArray as $result) { 
      $show_name = preg_replace("/".$search."/i", "<b class='highlight'>".$search."</b>", $result['name']); 
      $show_url = 'index.php'; 
      $out = str_replace('name', $show_name, $html); 
      $out = str_replace('url', $show_url, $out); 
      $_SESSION['result']= $result['name']; 
      echo($out); 
     } 
    } 
} 
?> 

的index.php

session_start(); 
<table> 
<?php foreach($_SESSION['result'] as $row){ ?> 
      <tr> 
       <td> 
       <?php echo $row['name'];?> 
       </td> 
       <td> 
       <?php echo $row['description'];?> 
       </td> 
      </tr> 
<?php } ?> 
</table> 
+1

你刚刚编辑了你的文章,添加我在我的回答中推荐的内容。请不要改变你的问题来实现解决方案!这使得解决方案失效,并且使得后来的人不可能看到你的错误并向他们学习,或者给出正确的答案。 – BeetleJuice

+0

注意:未定义指数:导致和 警告:() – xodebox95

+0

的foreach为无效的论点提供抱歉,但我却不得不在session_start()。这只是我忘了写在这里 – xodebox95

回答

0

你永远不启动的第一个文件的会话。与

<?php  
session_start(); 

启动文件,因为你错过了,当您在查询后分配一个值$_SESSION['result'],没有被保存在会话中。

还有一个错误。您的意思是$_SESSION['result']是一个数组,但是您将它保存为一个字符串。变化:

$_SESSION['result']= $result['name']; 

$_SESSION['result'][]= $result['name']; 
+0

对不起,我没有写在这里,我确实有会议开始,但错误继续: 注意:未定义的索引:结果和 警告:的foreach提供了无效的参数() – xodebox95

+0

反正会话开始犯规解决任何问题:( – xodebox95

+0

请再次测试,从一开始你已经把在第一个文件的顶部会议开始后,首先执行该文件,并确保。查询是正常运行,然后再加载第二个文件,错误应该消失。 – BeetleJuice

0

如果$ _SESSION [结果]然后一个数组尝试像下面

$_SESSION['result'][]= $result['name']; 

按你的代码会议结果变量不是一个数组

+0

然后从我的index.php,我必须添加 <?php foreach($ _ SESSION ['search_output'] [] as $ row){?> – xodebox95

+0

不需要添加另一个[] –

+0

不能解决问题:(仍然遇到同样的问题 – xodebox95