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。
第一个问题
我正在使用上面的代码检查我的数据库中的username
、password
、if($result)
我知道如果执行了$stmt
,它会返回 true,但无论如何我可以检查查询是否有有结果吗?
我在 *** 阅读了其中一个问答,其中说使用 $stmt->rowCount()
不一定返回所需的结果 是否有任何其他简单的解决方法来解决这个 cmets 建议使用if($stmt->fetch()>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】:您实际上并没有在查询中选择该值。您只选择了regno
和password
。
$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->rowCount()
应该适合你。如果不是,您应该发布一个新问题,显示您正在使用的代码,包括该语句和一个很好的例子,说明它何时失败以及失败时的结果。这将帮助我们解决问题。
Hi,$stmt->rowCount() 确实对我有用,但我在 Q/A 中读到它对其他数据库不可靠,所以我认为它的使用可能不正确。我想要你的意见关于某事你认为我应该停止搜索网络并找到 PDO 的各种方法。而是阅读它和关于查询(我确实阅读了猜测内容并没有很好地传递给我的大脑:*()
如果它适合您的目的,这就是您需要知道的一切。在它真正影响您的项目之前,不要担心其他事情。以上是关于PHP PDO 通过未定义的索引错误获取的主要内容,如果未能解决你的问题,请参考以下文章