Php mysql中使用pdo的参数编号问题无效
我最近开始使用pdo进行mysql查询,但我发现以下错误 警告:PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:未定义参数 我的密码是Php mysql中使用pdo的参数编号问题无效,php,mysql,pdo,Php,Mysql,Pdo,我最近开始使用pdo进行mysql查询,但我发现以下错误 警告:PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:未定义参数 我的密码是 $conquery = $this->db->prepare("SELECT questions.quid,answers.catid,answers.ansid FROM questions,answers where questions.qtype = ? and an
$conquery = $this->db->prepare("SELECT questions.quid,answers.catid,answers.ansid
FROM questions,answers where questions.qtype = ? and answers.userid = ? and (questions.quid = answers.quid)");
$conquery->execute(array('questions.qtype' => 'concern','answers.userid' =>$_SESSION['user_id']));
您的参数未在准备好的语句中命名(您使用的是“?”),您应该尝试以下操作:
$conquery->execute(array('concern',$_SESSION['user_id']));
您误解了参数的工作原理。 有两种方法可以使用参数。这些方法不能同时使用 索引参数: 使用索引参数时,在查询中使用
?
。
然后使用一个简单的索引数组绑定参数。在您的cas中,您可以编写:
$conquery = $this->db->prepare("SELECT questions.quid,answers.catid,answers.ansid
FROM questions,answers where questions.qtype = ? and answers.userid = ? and (questions.quid = answers.quid)");
$conquery->execute(array( 'concern',$_SESSION['user_id']))
命名参数:
使用命名参数时,在参数名称(等号右侧)前面加上一个:
,然后使用命名数组,在您的情况下,它将是:
$conquery = $this->db->prepare("SELECT questions.quid,answers.catid,answers.ansid
FROM questions,answers where questions.qtype = :qtype and answers.userid = :userid and (questions.quid = answers.quid)");
$conquery->execute(array('qtype' => 'concern','userid' =>$_SESSION['user_id']))
非常感谢您的帮助。我比较了artragis描述的两种方法。