我试图设置一个数组,其中包含我的PDO查询在文件上所需的所有参数,而这些查询中的第一个是SELECT
,仅使用一个参数。
$data = array(
'us_id' => $_POST['us_id'],
'us_credits' => $_POST['us_credits'],
'us_access' => $_POST['us_access']
);
$selectUsers= "SELECT * FROM ws_users WHERE us_id= :us_id";
$statementSelectUsers = $pdo->prepare($selectUsers);
$statementSelectUsers->execute($data);
$result = $statementSelectUsers->fetch(PDO::FETCH_ASSOC);
$us_fk_ui_id = $result['us_fk_ui_id'];
执行时,出现致命错误:
致命错误:未捕获的异常'PDOException'带有消息SQLSTATE[HY093]: Invalid parameter number:绑定变量的个数不匹配token的数量C:'wamp'www'waisap'actions'ad_updateUserInfo.php on line 25
第25行是$statementSelectUsers->execute($data);
行
据我所知,PDO上的SELECT
查询不需要execute()
,但如果不执行查询,我就不能将数组中包含的绑定数据传递给查询的占位符。这就是错误的原因吗?如何传递一个数组应用于我的SELECT
查询的占位符?
让我重复一下5分钟前我在另一个答案中告诉你的:
数组键必须匹配查询中的占位符。如果你的查询有不同的占位符集,你也需要不同的数组。
所以,这就是这个问题的原因。
据我所知,PDO上的SELECT查询不需要执行(),
你学错了。你必须执行已经准备好的一切。
首先,创建只有一个元素的$data
数组,并将其用于SELECT
$data = array('us_id' => $_POST['us_id']);
$stmt = $pdo->prepare("SELECT us_fk_ui_id FROM ws_users WHERE us_id= :us_id");
$stmt->execute($data);
$us_fk_ui_id = $stmt->fetchColumn();
对于后面的查询,将其他项添加到该数组