php - 试图为我的未定义索引找到解决方案

标签 php mysql sql session pdo

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

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

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

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

有人找到解决此通知的解决方案吗?

我遇到了这个错误:

注意:未定义索引:在我的“SELECT * FROMcategories {$_SESSION['where']}...”中的位置

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

我的php代码用于在 session 中存储用户在我的搜索字段中传递的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';
}

最佳答案

您应该完全像使用 $_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;
}

关于php - 试图为我的未定义索引找到解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22895371/

相关文章:

php - 如何使用 PHP 管理服务器运行时的 secret ?

php - 优化大型且逐渐增加的数据库

php - 将所有 WordPress 帖子和页面重定向到主页

javascript - 使用 Ajax 和 jQuery 无法在 div 部分显示 Json 数据

java - 我无法连接到 MySQL 数据库

mysql - 是否可以**将 .sql 文件扩展名更改为 .myname** 并且 wamp 或 sqlite 等软件仍然可以读取它?

mysql - 如何在共享主机上的laravel中保存textarea内容?

php - 如果列为空,在 php 中回显会出现错误

mysql - MySQL 中的多个 GROUP BY 和 COUNT

sql - 可以修改此查询以包含偏移量吗?