Php 警告:PDO::exec()要求参数1为字符串

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

我正在开发需要登录页面的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=$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将把非空变量计算为boolean
true
和空、空、零元素数组。。作为布尔值
false

if($status)
几乎与
if($status==true)
相同。您可以在PHP手册中找到这一点。

为答案添加了一些解释。你知道杰伦写的是对的吗?如果您想将代码投入生产,您需要听取他的建议。:)我是否可以替换$\u POST获得的所有$\u并请求相同的结果?