【发布时间】:2012-10-31 21:43:20
【问题描述】:
下面的代码表明我尝试根据代码中给出的条件来找出是否存在一行。它默认为 else 语句,正确,但如果 if 语句似乎为真(没有电子邮件为 ashfjks@sdhja.com),则不能与“if”语句一起使用,并且相反,代码继续。这段代码的后半部分主要是对情况进行扩展。该行只能存在或不存在,所以我不明白为什么它不严格执行其中一个。我正在转换为站点安全的 PDO,这就是为什么不是所有的都在 PDO 中。如果这个问题过于本地化,我很抱歉?
$stmt = $pdo->prepare("SELECT * FROM table WHERE email = ?");
$stmt->execute(array("$email"));
$row3 = $stmt->fetch(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()) {
if ( ! $row3) {
// Row3 doesn't exist -- this means no one in the database has this email, allow the person to join
$query = "INSERT INTO table (username, email, password, join_date) VALUES ('$username', '$email', SHA('$password1'), NOW())";
mysqli_query($dbc, $query);
$query = "SELECT * FROM table WHERE username = '$username'";
$data2 = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_array($data2)) {
$recipent = '' . $row['user_id'] . '';
$query = "INSERT INTO messages (recipent, MsgTit, MsgR, MsgA, sender, time, readb, reada, MsgCon) VALUES ('$recipent', '$MsgTit', '$MsgR', '$MsgA', '$sender', NOW(), '$readb', '$reada', '$MsgCon')";
mysqli_query($dbc, $query);
// Aftermath.
echo '<p>Your new account has been successfully created. You\'re now ready to <a href="game2.php" target="_blank">log in</a>. After this you should implement basic character-details on your users profile to begin the game.</p>';
mysqli_close($dbc);
exit();
} }
else {
// An account already exists for this email, so display an error message
echo '<p class="error">An account already exists for this e-mail.</p>';
$email = "";
}
}
【问题讨论】:
-
errr,如果
$stmt->fetch()返回false,则while循环已经退出,因此如果该行不存在,您将永远不会进入if语句..,在@ 之前使用987654326@ 循环类似if($row->rowCount() > 0) -
混合 PDO 和 MySQLi 有什么特殊原因吗?
-
他说他正在努力将其转换为 PDO 逐个查询。我想他不想一下子把它全部打破。他在这里似乎还有另一个大问题,所以混合可能不是大问题。
-
宇智波斑:我是 PDO 的新手,在学了一点 mysql 之后(轻轻松松)学了 mysqli。网上的朋友和评论告诉我,学习mysqli有点浪费时间,因为PDO似乎要好得多(以及未来..),所以我正在尝试使用PDO。