2015-01-10 3 views
-1

Следующий код 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); 
+6

Переменная '$ dbc' не определена в пределах функции' checkE' –

+0

Нелогично сказать: если ее меньше 1, верните 1, вместо этого скажите: если ее меньше 1, верните 0, так как меньше 1 равно 0 , но в стороне, как вы называете свою функцию ?, является ли параметр электронной почты правильным в вызове функции? – Neat

+1

Пожалуйста, используйте подготовленные заявления. Отправка POST-переменных в базу данных, подобную этой, приведет вас к взлому. – idstam

ответ

2

Добавить $ DBC к параметрам функции следующим образом:

function checkE($email,$dbc){ 

Затем вызовите вашу функцию как это:

checkE('[email protected]',$dbc); 

Вы не передавая переменную $ dbc прямо сейчас.

+0

Да, вот что указал u_mulder. Спасибо – Birrel

+2

Просто добавив, что вопрос не "без ответа" – Neat

Смежные вопросы