Написание инструкции Select Where в PHP и MySQL

#php #mysql #select #where

#php #mysql #выберите #где

Вопрос:

Кто-нибудь порадует меня приведенным ниже кодом, я неопытен в этой области, и мой класс в SQL был «Давным-давно в далекой-далекой галактике …» Я знаю, что строка подключения работает, потому что я использовал ее в других функциях этого приложения. Я даже использовал приведенный ниже код для извлечения * строк из другой таблицы в другой функции, по большей части, за исключением того, что я не использовал предложение WHERE .

Во-первых, я могу хранить IP-адреса в таблице с помощью функции, и она работает хорошо. Теперь я хочу проверить, существует ли данный оператор в этой таблице. Ниже приведен частичный код.

Кажется, что всегда возвращается 0 строк. Я ввел тестовые данные в таблицу и жестко запрограммировал $ipA, но я все равно получаю возврат 0 строк. Пожалуйста, помогите, если это возможно, и спасибо за потраченные усилия.

 function checkDB($ipA) {    

    require_once('connection.inc.php');

    $resultAns = "";    

    //create db connection
    $conn = dbConnect();               

    //init prepared stmt
    $stmt = $conn->stmt_init();

    //Set sql query for ipAddress search
    //prepare the SQL query
    $sql = 'SELECT * FROM ipAddress WHERE ipA = ?'; 

    //submit the query and capture the result   
    if ($stmt->prepare($sql)) {                 
        $stmt->bind_param('s', $ipA);
        $stmt = $stmt->execute();

        //if qry triggers error affeted_rows value becomes -1  amp; 
        //php treats -1 as true; so test for greater than 0

        $numRows = $stmt->num_rows;     //not to sure about the syntax here
     } 


    // I want to know if the query brought back something or not, I don't what
    // to know exactly what, only that it found a match or did not find a match.
    // echos are for testing purposes to show me where I am landing.

    if ($numRows == 0) {
        echo '<script type="text/javascript">window.alert("numRows = 0")</script>';
        $resultAns = 0;
    } elseif ($numRows == 1) {
        echo '<script type="text/javascript">window.alert("numRows = 1")</script>';
        $resultAns = 1;
    }

    return $resultAns;
 

}

Комментарии:

1. Хорошо, я добавил $stmt-> store-result(); как предложено ниже и упоминается в моих книгах, но я получаю «Фатальную ошибку: вызов функции-члена store_result() для не-объекта в строке 31».

Ответ №1:

Попробуйте сохранить результат после выполнения

 $stmt->store_result();
 

Комментарии:

1. Спасибо, что подтвердили, что мне нужна эта строка кода. Я был в своей книге, но я пропустил это.

Ответ №2:

Используйте $stmt->store_result(); перед вызовом num_rows .

Ответ №3:

В то время как другие обнаружили одну причину, по которой $numRows никогда не получит значение, отличное от 0, другой фрагмент кода, который был ошибочным и вызывал проблемы, был…

$ stmt = $stmt-> execute(); который должен был быть просто $stmt-> execute();

Должно быть, я перепутал его с другим кодом, который я написал откуда-то еще.

Спасибо за ответы, они действительно помогли.