Php 警告:PDO::exec()要求参数1为字符串
我正在开发需要登录页面的web应用程序,在我尝试转换为PDO并使用准备好的查询之前,一切都正常。以下是我的代码:Php 警告:PDO::exec()要求参数1为字符串,php,mysql,pdo,Php,Mysql,Pdo,我正在开发需要登录页面的web应用程序,在我尝试转换为PDO并使用准备好的查询之前,一切都正常。以下是我的代码: $req=$idconnex->prepare("SELECT * FROM `enseignant` WHERE ens_cin=:cin AND ens_pass=:pass"); $req->bindParam(':cin',$_GET["login"]); $req->bindParam(':pass',$_GET["password"]); $res=$i
$req=$idconnex->prepare("SELECT * FROM `enseignant` WHERE ens_cin=:cin AND ens_pass=:pass");
$req->bindParam(':cin',$_GET["login"]);
$req->bindParam(':pass',$_GET["password"]);
$res=$idconnex->exec($req);
if(!empty($res) AND $res->rowCount==1)
{echo 'SUCCESS';}
else
{echo 'FAIL';}
出现警告:
警告:PDO::exec()要求参数1为字符串,对象在
即使我插入了正确的参数,它也会返回失败 准备语句时,需要而不是,并且需要使用准备语句时设置的对象:
$req=$idconnex->prepare("SELECT * FROM `enseignant` WHERE ens_cin=:cin AND ens_pass=:pass");
$req->bindParam(':cin',$_GET["login"]);
$req->bindParam(':pass',$_GET["password"]);
$req->execute();
还要注意,这是一个方法,而不是属性,当您使用SELECT
查询时,您不能依赖它的值。有关更多信息,请参阅手册中关于的页面
此外,当您发送密码之类的信息时,不应该使用GET而是POST,您应该使用盐哈希作为密码,而不是纯文本密码。有关更多详细信息,请参阅。将此添加到jeroen的答案中
$status = $req->fetch(\PDO::FETCH_ASSOC);
if($status)
{echo 'SUCCESS';}
else
{echo 'FAIL';}
$req->fetch(\PDO::fetch\u ASSOC)
实际上是在询问查询结果。您可以通过var\u dump($status)
查看它包含的内容。
如果找到匹配项,则返回关联数组;如果未找到匹配项,则返回空数组
PHP将把非空变量计算为booleantrue
和空、空、零元素数组。。作为布尔值false
。
if($status)
几乎与if($status==true)
相同。您可以在PHP手册中找到这一点。为答案添加了一些解释。你知道杰伦写的是对的吗?如果您想将代码投入生产,您需要听取他的建议。:)我是否可以替换$\u POST获得的所有$\u并请求相同的结果?