【问题标题】:trying to find a solution for my undefined index试图为我的未定义索引找到解决方案
【发布时间】:2014-04-06 14:27:57
【问题描述】:

我有一个包含类别列表的表格,还有一个用于搜索类别标题的表格。

我正在按我想要的方式进行这项工作,但我有 两个通知,我已经有几天无法找到解决方案了。

我知道如果我把 @ 放在 sql 语句之前我可以解决我的问题,但我认为那是不正确的。

当我传递一个值时,搜索表单工作正常,但是当我不传递任何值时,我总是有通知说:“注意:未定义的索引:在哪里”,因为选择加载类别列表是在没有完成的情况下完成的已将任何值传递给我的 sql 语句中使用的 $_SESSION['where']

有人看到解决此通知的一些解决方案吗?

我有这个错误:

注意:未定义索引:where in my "SELECT * FROM categories {$_SESSION['where']}..."

我知道我有这个错误是因为

我的 php 代码,用于在会话中存储用户在我的搜索字段中传递的 sql 语句:

if(isset($_POST['sendForm']))
{
$search = $_POST['search'];
if(!empty($search) && $search != 'Search...:')
{
    $_SESSION['where'] = "WHERE t LIKE '%$search%'";
    header('Location: index2.php?exe=posts/categories');
}
else
{
    unset($_SESSION['where']);
    header('Location: index2.php?exe=posts/categories');
}
}

然后我做我的sql语句:

我的 sql 语句 php 代码:

$pag = (empty($_GET['pag']) ? '1' : $_GET['pag']);
$max = 3; 
$begin = ($pag * $max) - $max;

$readCategory = $pdo->prepare("SELECT * FROM categories {$_SESSION['where']} ORDER BY name DESC LIMIT :begin, :max");
$readCategory->bindParam(':begin', $begin, PDO::PARAM_INT);
$readCategory->bindParam(':max', $max, PDO::PARAM_INT);
$readCategory->execute();



$num_readCategory = $readCategory->rowCount();

if(!$num_readCategory >= 1)
{
echo 'There are not categories yet';
}

【问题讨论】:

  • session_start(); 已加载?另外,为什么我觉得我以前看过这个问题/代码?
  • sql 在会话中... ;(

标签: php mysql sql session pdo


【解决方案1】:

您应该像使用 $_GET 参数一样解决问题:

$where = isset($_SESSION['where']) ? $_SESSION['where'] : '';
$readCategory = $pdo->prepare("SELECT * FROM categories {$where} ORDER BY name DESC LIMIT :begin, :max");

另外,我通常将这种访问封装在一个函数/方法中:

function get_session_param($name, $default = null) {
   if (isset($_SESSION[ $name ])) {
       return $_SESSION[ $name ]; 
   }
   return $default;
}

【讨论】:

    【解决方案2】:

    如果您的搜索词为空,您将取消设置 $_SESSION['where'] 变量,因此它是未定义的。

    相反,只需将其设置为空字符串:

    else
    {
        $_SESSION['where'] = "";
        header('Location: index2.php?exe=posts/categories');
    }
    

    【讨论】:

    • 感谢您的回答...有道理,但我遇到了同样的错误!
    猜你喜欢
    • 2019-11-16
    • 2012-06-17
    • 2013-05-29
    • 2021-08-29
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    相关资源
    最近更新 更多