$ recruitcheck/$ badgecheck на самом деле работает, и он возвращается правильно, и он обеспечивает проверенное эхо, но я предполагаю, что я делаю что-то неправильное с материалом store/bind/close, так как у меня возникают некоторые проблемы с выяснением, как именно оно работает.Что мне не хватает, что вызывает: Команды не синхронизированы; вы не можете запустить эту команду сейчас?
Проблема возникает с помощью $ emailcheck/$ namecheck, потому что он неточно возвращает запрос, и это похоже на обход фазы $ register, где она возвращает эхо-ошибку, поэтому $ mailcheck/$ namecheck всегда ложь/0.
У меня было это раньше, но я пытаюсь реализовать некоторые функции безопасности, поэтому я добавил подготовленные заявления, и я едва знал, что делаю, прежде чем добавлять их, поэтому я приношу свои извинения, если этот вопрос не подходит, или он недостаточно информации. Если вы прокомментируете, я отредактирую сообщение, чтобы оно было более релевантным. Пожалуйста, дайте мне шанс.
$recruitcheck = mysqli_prepare($maindb, "SELECT aurapass, recruitbadge FROM auras WHERE auraname = ?");
mysqli_stmt_bind_param($recruitcheck, "s", $recruitername);
mysqli_stmt_execute($recruitcheck);
mysqli_stmt_bind_result($recruitcheck, $passcheck, $badgecheck);
mysqli_stmt_fetch($recruitcheck);
if($passcheck == $recruitpass){
if($badgecheck == "valid"){
mysqli_close($recruitcheck);
echo "<script>alert('Recruiter badge verified.')</script>";
$emailcheck = mysqli_prepare($maindb, "SELECT * FROM auras WHERE email = ?");
mysqli_stmt_bind_param($emailcheck, "s", $email);
mysqli_stmt_execute($emailcheck);
mysqli_stmt_fetch($emailcheck);
$namecheck = mysqli_prepare($maindb, "SELECT * FROM auras WHERE auraname = ?");
mysqli_stmt_bind_param($namecheck, "s", $auraname);
mysqli_stmt_execute($namecheck);
mysqli_stmt_fetch($namecheck);
if(mysqli_num_rows($emailcheck)>0 || mysqli_num_rows($namecheck)>0){
die("<script>alert('New auraname/email is already taken.')</script>");
}
else{
mysqli_close($emailcheck);
mysqli_close($namecheck);
if($email == $emailconfirm){
$register = mysqli_prepare($maindb, "INSERT INTO auras (recruitername, recruitmethod, email, birthday, country, gender, auraname) VALUES (?, ?, ?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($register, "sssisss", $recruitername, $recruitmethod, $email, $birthday, $country, $gender, $auraname);
mysqli_stmt_execute($register);
mysqli_close($register);
if(!$register) {
echo mysqli_error($maindb);
die("<script>alert('Error returned during registration: See bottom of page.')</script>");
}
else{
die("<script>alert('New aura registered successfully!')</script>");
$ passcheck/$ badgecheck просто переменные связывания, и единственные места, они называются, где вы видите их здесь. В противном случае:
$recruitpass = cleaninput($_POST["recruitpass"]);
и
function cleaninput($info) {
$info = trim($info);
$info = stripslashes($info);
$info = htmlspecialchars($info);
return $info;}
recruitcheck на самом деле работает, так как она изменяется с неправильным против правильного ввода, но код не правильно переходить к следующей проверке.
Именно то, что я собирался сказать. @BaileyF Я бы хотел добавить метод отладки 101: отрезать некоторые коды до тех пор, пока он не сработает, а затем поместите его обратно за строкой. Это не единственная техника, не всегда лучшая, но может быть действительно полезной для новичков, а иногда и для быстрого выяснения проблемы. –
Я вставил fetch, но он все еще не запускает $ emailcheck/$ namecheck. –
@BaileyF: Пожалуйста, покажите нам содержимое '$ passcheck',' $ recruitpass' и '$ badgecheck'. –