【问题标题】:variable not found in php在php中找不到变量
【发布时间】:2014-10-01 09:02:07
【问题描述】:

我使用会话将数组传递到另一个页面 我还传递了一个数组索引 现在我想访问那个特定的索引,但我不能这样做任何人都可以帮忙

这是我创建数组并将其存储在会话中的第一页

<?php

//connection made
$con = mysqli_connect("localhost", "root", "", "QSTNS");
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

//-----------------two variables entered in datavbase------------
$user = mysqli_real_escape_string($con, $_POST['user']);
$user1 = mysqli_real_escape_string($con, $_POST['user1']);

$sql = "INSERT INTO student (name,rln,scr)VALUES ('$user1','$user','0')";
if (!mysqli_query($con, $sql)) {
    die('Error: ' . mysqli_error($con));
}

$res = mysqli_query($con, 'SELECT COUNT(*) FROM qstns');
$row = mysqli_fetch_array($res);
echo $row[0];

$size = $row[0];

//creating an array of size equal to number of questions in DATABASE....
$q_indx = array(); //question indexes without permutation 
$attmpt = array(); //check if a question attempted or not
$score = array();  //score per question initially empty    

for ($i = 0; $i < $size; $i++) {
    array_push($q_indx, $i);
    array_push($attmpt, -1);
    array_push($score, 0);
}

$cindx = 0;

session_start();
$_SESSION['q_indx'] = $q_indx;             //HERE THAT SESSION IS CREATED
$_SESSION['attmpt'] = $attmpt;
$_SESSION['score'] = $score;
$_SESSION['cindx'] = $cindx;

header('Location: quiz_start.php');
mysqli_close($con);
?>

这里是 quiz_start.php

<?php
       session_start();

      $con=mysqli_connect("localhost","root","","QSTNS");
        if (mysqli_connect_errno()) {
         echo "Failed to connect to MySQL: " . mysqli_connect_error();
          }

       $dslpy=$_SESSION['q_indx'][$_SESSION['cindx']] ;
          echo $dsply ;
          //$qstn = mysqli_query($con,"SELECT * FROM qstns where qid = '". $dsply[0] 

           ."'");

            //echo $qstn['qname'] . '\n';

          mysqli_close($con);
          ?>

它给出了错误 dsply variable not found 任何人都可以帮忙吗?

【问题讨论】:

  • 你的 SQL 不应该是“SELECT * FROM qstns where qid = '{$dsply[0]}'”吗?
  • 如果我错了,请纠正我,但您要在这里完成的是访问cindx,它是q_indx 数组的整数(索引),两者都存储在会话变量中?如果是,那么您可以执行以下操作:$_SESSION['q_indx'][$_SESSION['cindx']]

标签: php arrays session


【解决方案1】:

this script,我们可以得出$_SESSION['q_indx'] 包含一个数字数组,如下所示;

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
)

根据您的代码$cindx = 0;,我们正在查看索引0。因此,

echo $_SESSION['q_indx'][0];  //One way of doing it
echo $_SESSION['q_indx'][$cindx];  //Another way of doing it

编辑

不能在第 12 行的 C:\wamp\www\quiiz_portal\quiz_start.php 中使用 mysqli_result 类型的对象作为数组,你能告诉它为什么在那里

将您的 MySQL 查询更改为

$qstn = mysqli_query($con, "SELECT * FROM qstns where qid = '". $dsply[0] ."'");

编辑

您的第一个文件中缺少session_start();

【讨论】:

  • @hd 我试过了,它产生了另一个错误 Cannot use object of type mysqli_result as array in C:\wamp\www\quiiz_portal\quiz_start.php on line 12 你能告诉它为什么在那里跨度>
  • 该错误并非源于此处。我会更新我的答案为你解决这个问题
  • @hd 我已经编辑了查询请你告诉我出了什么问题我是 php 的新手
  • 您的第一个文件中没有session_start();
  • 你可以,但是在开始的 php 标签之后。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 2020-01-28
  • 2021-05-31
  • 2019-07-28
  • 2014-11-21
  • 1970-01-01
相关资源
最近更新 更多