Следующий код PHP работает отлично:Противоречивые MySQL запросов
<?php
// AJAX check for email availability (against database)
if(isset($_POST["email"])){
$email = $_POST["email"];
$sql = "SELECT id FROM users WHERE email='$email' LIMIT 1";
$query = mysqli_query($dbc, $sql);
$check = mysqli_num_rows($query);
if($check < 1){
echo '1';
exit();
}else{
echo '0';
exit();
}
}
?>
Но я в конечном итоге необходимости этот бит кода несколько раз, так что я взял его и положил его в функцию:
<?php
function checkE($email){
$sql = "SELECT id FROM users WHERE email='$email' LIMIT 1";
$query = mysqli_query($dbc, $sql);
$check = mysqli_num_rows($query);
if($check < 1){
return 1;
}else{
return 0;
}
}
?>
Первый бит кода работает безупречно каждый раз, но вторая функция возвращает только «1», то есть никогда не находит соответствия в базе данных (или $check
всегда меньше 1), даже при сравнении электронного письма, которое в противном случае был бы пойман первым битом кода.
Я пробовал эхо-сигнал $check
со второй функции, и он печатает только пустое пространство. Коды по существу идентичны, за исключением назначения $email
в первом бите.
Я просто устал и пропустил что-то очевидное в функции?
И если это необходимо:
$dbc = mysqli_connect($db_host, $db_username, $db_pass, $db_name);
Переменная '$ dbc' не определена в пределах функции' checkE' –
Нелогично сказать: если ее меньше 1, верните 1, вместо этого скажите: если ее меньше 1, верните 0, так как меньше 1 равно 0 , но в стороне, как вы называете свою функцию ?, является ли параметр электронной почты правильным в вызове функции? – Neat
Пожалуйста, используйте подготовленные заявления. Отправка POST-переменных в базу данных, подобную этой, приведет вас к взлому. – idstam