Php PDO绑定/执行问题
嗨,这是我的代码,我创建了2个sqlite表示例并正确地登录了\u信息,尽管这个错误仍然会弹出 致命错误:未捕获PDOException:SQLSTATE[HY000]:常规错误:25绑定或列索引超出C:\xampp\htdocs\display.php中的范围:22Php PDO绑定/执行问题,php,pdo,Php,Pdo,嗨,这是我的代码,我创建了2个sqlite表示例并正确地登录了\u信息,尽管这个错误仍然会弹出 致命错误:未捕获PDOException:SQLSTATE[HY000]:常规错误:25绑定或列索引超出C:\xampp\htdocs\display.php中的范围:22 展示 您的用户名为,密码为。 ' 您的问题是,您没有绑定这两个值,而是尝试分别执行它们。要么先绑定它们,然后执行,要么同时执行它们。您还提供了3个参数,而不是两个。我看不出$\u SESSION['sample'](来自上一
展示
您的用户名为,密码为。
'
您的问题是,您没有绑定这两个值,而是尝试分别执行它们。要么先绑定它们,然后执行,要么同时执行它们。您还提供了3个参数,而不是两个。我看不出$\u SESSION['sample']
(来自上一个查询的ID)如何适应这种情况,所以只需删除它
下面是一个如何执行它的示例。请注意,execute()
中作为参数提供的数组包含与占位符数量相同的元素,并且它们的显示顺序正确
$insertStatement = $pdo->prepare("INSERT INTO login_info (username, password) VALUES (?, ?)");
$insertStatement->execute([$user, $pword]);
您的问题是您多次尝试执行。您似乎混淆了PDOStatement::bindParam
的语法,这将是
$insertStatement = $pdo->prepare("INSERT INTO login_info (username, password) VALUES (?, ?)");
$insertStatement->bindParam(1, $user);
$insertStatement->bindParam(2, $pword);
$insertStatement->execute();
通过对同一条语句多次调用execute()
,您可以尝试多次执行它—如果您想插入相同类型的数据,但值不同,这很有用—这与您在此处执行的操作无关
其他需要注意的事情。。。 您当前将密码存储在会话中并直接向用户显示-强烈建议不要这样做。它看起来也像是用纯文本存储psawarks,这是一个大禁忌!使用适当的散列方法,如
password\u hash()
和password\u verify()
参考和阅读材料
$user
和$pword
是否携带值?
$insertStatement = $pdo->prepare("INSERT INTO login_info (username, password) VALUES (?, ?)");
$insertStatement->execute([$user, $pword]);
$insertStatement = $pdo->prepare("INSERT INTO login_info (username, password) VALUES (?, ?)");
$insertStatement->bindParam(1, $user);
$insertStatement->bindParam(2, $pword);
$insertStatement->execute();