2015-05-08 2 views
0

Попытка инициировать функцию в PHP и MySQLi для возврата TRUE, если пользователь активирован (1) или FALSE, пользователь НЕ активирован (0).Функция активации процесса в MySQLi?

Я проверил эти коды и не повезло, получив ошибки MySQLi. И в виду, я новичок в MySQLi.

function get_activated($mysqli, $userid) { 

    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array(); 
    if($row){ 
     $activated = TRUE; 
     return $activated; 
    } 
} 

function get_activated($mysqli) { 

    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array(); 
    if($row){ 
     $activated = TRUE; 
     return $activated; 
    } 
} 

function get_activated($mysqli, $userid) { 
    if(isset($_SESSION['userid'])) { 
     $userid = $_SESSION['userid']; 
    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array(); 
    if($row){ 
     $activated = TRUE; 
     return $activated; 
    } 
    } 
} 

function get_activated($mysqli) { 
    if(isset($_SESSION['userid'])) { 
     $userid = $_SESSION['userid']; 
    $row = $mysqli->query("SELECT activated FROM users WHERE userid = '{$userid}'")->fetch_array(); 
    return $row["activated"]; 
    } 
} 

Я вызываю функцию так:

get_activated($userid); 
       echo $activated; 
       exit(); 

get_activated(); 
      echo $row['activated']; 
      exit(); 

Если кто-то может мне точку в правильном направлении здесь я был бы очень благодарен, спасибо!

Ошибка примеры:

Отсутствует аргумент 2 для get_activated() вызова функции члена запроса() на не-объекте только переменные должны быть переданы по ссылке отсутствующего аргумент 1 для get_activated()

+1

Почему у вас так много функций, которые называются одинаковыми? ('Get_activated()')? Кроме того, когда вы «возвращаете» переменную, которая назначается для чего-то, не вызываться, как вы пытаетесь ... Это должно быть так: '$ activate = get_activated ($ userid);' – Darren

+1

показать mysqli ошибка. – ihsan

+0

Пожалуйста, разместите ошибки, которые вы попадаете в вопрос. –

ответ

1

Я думаю, что вы ищете что-то вроде:

function get_activated($mysqli, $userid) { 
    $row = $mysqli->query("SELECT * FROM users WHERE userid = '$userid' AND activated = '1'")->fetch_array(); 
    if(!empty($row)){ 
     return true; 
    } 
    return false; 
} 

метод fetch_array() является MySQLi возвратит нуль, если он не находит ни одной строки, я так же, как USI ng empty, если вы расширили MySQLi и каким-то образом изменили функциональность - я сделал это раньше, чем случайно.

Кроме того, когда вы затем вызвать эту функцию следует использовать -

$activated = get_activate($mysqli,1); 
var_dump($activated); 

На стороне записки, я бы всегда использовать подготовленные заявления, но это еще не на этот вопрос.

+0

Большое спасибо! Работал в первый раз, именно то, что я искал - на стороне записки, где вы ввели ($ mysqli, 1); для вызова функции, это просто указание на вызов $ userid? Как и в старой версии MySQL, я помню функции с переменными, посланными через них, например, в мой вопрос get_activated ($ userid); и т. д. – Aidanpt6

+0

Я просто приводил пример userid, который, как я полагал, был 1, да, вы должны использовать $ userid. –

1

Итак, давайте это один на один

function get_activated($mysqli, $userid) { 

    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array(); 
    if($row){ 
     $activated = TRUE; 
     return $activated; 
    } 
} 

Так +1 для инъекций mysqli класса, но вы ищете только в случае, если запрос успешно. Помните, что запрос может преуспеть и вернуть 0 строк. Вы также получите только return, если запрос завершен. Вы должны вернуть true на успех и false на успех.

Функция №2 сбивает с толку, поскольку она пропускает $userid и испытывает те же проблемы.

function get_activated($mysqli, $userid) { 
    if(isset($_SESSION['userid'])) { 
     $userid = $_SESSION['userid']; 
    $row = $mysqli->query("SELECT * FROM users WHERE userid = '{$userid}' AND activated = '1'")->fetch_array(); 
    if($row){ 
     $activated = TRUE; 
     return $activated; 
    } 
    } 
} 

Так что теперь у нас есть $_SESSION ценности, но до сих пор проходят $userid в качестве аргумента (который сбивает с толку). Затем мы посмотрим, вернули ли значения query любые значения. Это лучше, но это плохая форма для цепи query до fetch_*, потому что если запрос не получается, вы получите ошибку FATAL.

function get_activated($mysqli) { 
    if(isset($_SESSION['userid'])) { 
     $userid = $_SESSION['userid']; 
    $row = $mysqli->query("SELECT activated FROM users WHERE userid = '{$userid}'")->fetch_array(); 
    return $row["activated"]; 
    } 
} 

Так же проблема с $userid как # 3 и тем же вопросом с цепочкой, но мы ближе, потому что мы, по крайней мере, возвращающим значение. Но, опять же, он не учитывает, что произойдет, если запрос возвращает 0 строк.

Напишем полную функцию, которая работает в настоящее время

function get_activated($mysqli, $userid) { 
    $uid = $mysqli->real_escape_string($userid); 
    $result = $mysqli->query("SELECT * FROM users WHERE userid = " . $uid . " AND activated = '1'"); 
    $data = $result->fetch_assoc(); 
    return ($data) ? true : false; 
} 

Итак, сначала мы дезинфицировать $userid. Затем мы делаем запрос. Впоследствии мы ищем возвращаемую строку, и мы возвращаем логическое значение, если мы это сделали или не сделали. Теперь мы можем использовать его вот так

if(get_activated($mysqli, $userid)) { 
    echo 'Activated'; 
} else { 
    echo 'Not activated'; 
} 
+0

Спасибо, что нашли время, чтобы объяснить таким деталям новичка, как я, если бы больше людей помогали таким образом, мы, новички, были бы экспертами в кратчайшие сроки, я многому научился прочитывать каждый пример, вернусь к работайте с советами и немного экспериментируйте с этим, я ценю помощь! – Aidanpt6

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