我正在构建一个简单的登录脚本并具有以下内容:
$sparklyUsername = strtolower($_POST['sparklyUsername']);
$sparklyPassword = $_POST['sparklyPassword'];
if($stmt = $sparklyDatabaseConnection -> prepare("SELECT username FROM SYS_users WHERE username=?")) {
$stmt -> bind_param("s", $sparklyUsername);
$stmt -> execute(); /* Execute the query */
$stmt -> bind_result($result);
$stmt -> fetch();
现在一切正常,但是如果我尝试检索多个列怎么办,例如:
if($stmt = $sparklyDatabaseConnection -> prepare("SELECT username, password, email FROM SYS_users WHERE username=?")) {
我收到错误“绑定变量的数量与准备好的语句中的字段数量不匹配”。
现在我习惯了 VBScript,其中这样的查询返回一个记录集(例如resultsRS("")),然后您使用列名(例如resultsRS("username"))查询该记录集以获取特定列,但我可以收集,使用上面的代码,我将每列返回绑定到单个变量,如下所示:
$stmt -> bind_result($username, $password, $email);
如果是这种情况,我如何检查 now 行是否已经返回?在 VBScript 中,我会检查记录集是否为空(例如IF resultsRS.EOF)。
如果我需要遍历所有返回的记录,我看到的所有示例都显示如下:
while ($row = $result->fetch_assoc()) {
但是,如果这似乎从我期望的列中创建了一行!