PHP PDO 通过未定义的索引错误获取

Posted

技术标签:

【中文标题】PHP PDO 通过未定义的索引错误获取【英文标题】:PHP PDO fetch through undefined index error 【发布时间】:2014-01-11 19:02:48 【问题描述】:
try 
  $db = new PDO("mysql:host=localhost;dbname=placement", "rot", "password");
 catch (Exception $e) 
    die("An error occured" . $e->getMessage());

$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $db->prepare("SELECT regno,password FROM placement.authenticate 
                    WHERE regno = ? AND password = ? LIMIT 1");
$result = $stmt->execute(array( $username, $password ));
if ($result) 
  $row = $stmt->fetch(PDO::FETCH_ASSOC);
  echo "$row['admin']<br/>";
 else 
  die("Error Occurred<br/>");

我正在使用 mysql。

第一个问题

我正在使用上面的代码检查我的数据库中的usernamepasswordif($result) 我知道如果执行了$stmt,它会返回 true,但无论如何我可以检查查询是否有有结果吗?

我在 *** 阅读了其中一个问答,其中说使用 $stmt-&gt;rowCount() 不一定返回所需的结果 是否有任何其他简单的解决方法来解决这个 cmets 建议使用if($stmt-&gt;fetch()&gt;0)这种方法正确吗?

第二个问题

我使用 $row=$stmt->fetch(PDO::FETCH_ASSOC); 获取当前行 我收到错误说 undefined index.at Line the

echo "$row['admin']";

我使用 print_r($row) 时,我只得到 2 列而不是第 3 列。

抱歉这个愚蠢的问题,但这是我之前在代码中使用的任何 PDO 语句的结果。(我正在学习 php

我已经浏览了这些链接 Link 1 Link 2

【问题讨论】:

【参考方案1】:

为什么您希望从查询中获得 3 列?

SELECT regno,password FROM placement.authenticate etc...
       ^^^^^^^^^^^^^^

您只获取这两个指定的列。 admin 结果中没有 admin 结果,因为您没有告诉数据库获取它。例如你需要

SELECT regno,password,admin etc...
                     ^^^^^^---you need this

【讨论】:

谢谢你,我想我应该多读一些关于查询的文章【参考方案2】:

您实际上并没有在查询中选择该值。您只选择了regnopassword

$stmt=$db->prepare("SELECT regno,password FROM placement.authenticate 
            WHERE regno = ? AND password = ? LIMIT 1");       

需要成为:

$stmt=$db->prepare("SELECT regno,password,admin FROM placement.authenticate 
            WHERE regno = ? AND password = ? LIMIT 1");       

【讨论】:

谢谢你,我想我应该多读一些关于查询的文章 关于问题1我该怎么办? $stmt-&gt;rowCount() 应该适合你。如果不是,您应该发布一个新问题,显示您正在使用的代码,包括该语句和一个很好的例子,说明它何时失败以及失败时的结果。这将帮助我们解决问题。 Hi,$stmt->rowCount() 确实对我有用,但我在 Q/A 中读到它对其他数据库不可靠,所以我认为它的使用可能不正确。我想要你的意见关于某事你认为我应该停止搜索网络并找到 PDO 的各种方法。而是阅读它和关于查询(我确实阅读了猜测内容并没有很好地传递给我的大脑:*() 如果它适合您的目的,这就是您需要知道的一切。在它真正影响您的项目之前,不要担心其他事情。

以上是关于PHP PDO 通过未定义的索引错误获取的主要内容,如果未能解决你的问题,请参考以下文章

通过未定义的方法错误测试“应该获取索引”

为啥在使用 AJAX/PHP 时收到未定义索引错误?

未定义的索引文本输入php? [复制]

从谷歌意外未定义索引中获取联系人时

无法连接到本地 PHP 站点(未定义索引和未定义变量错误)[重复]

OOP PHP未定义变量