Как написать подготовленное MySQL заявление, используя одну и ту же переменную во многих столбцах? - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь выбрать слово из словаря английского языка в MySql. Значения версий сохраняются в разных столбцах. Поэтому я пытаюсь написать свое подготовленное заявление следующим образом. Но это дает мне ошибку, и до сих пор я не нашел лучшего решения. Мой код выглядит следующим образом:

$sql = "SELECT * FROM `dic1` 
                    WHERE 
                    eng     LIKE '%?%' OR 
                    eng2    LIKE '%?%' OR
                    eng3    LIKE '%?%' OR
                    eng4    LIKE '%?%' OR
                    eng5    LIKE '%?%'";

                $stmt = mysqli_prepare($conn, $sql);
 mysqli_stmt_bind_param($stmt, "sssss", $searchWord);

Можете ли вы предложить мне лучший способ? Спасибо.

1 Ответ

0 голосов
/ 01 ноября 2018

Здесь есть 2 проблемы:

  1. Вы не привязываете 5 значений, когда используете 5 в своем запросе;
  2. Вам нужно удалить кавычки и поместить символы подстановки, где вы связываете свои переменные:

    $sql = "SELECT * FROM `dic1` 
                WHERE 
                eng     LIKE ? OR 
                eng2    LIKE ? OR
                eng3    LIKE ? OR
                eng4    LIKE ? OR
                eng5    LIKE ?";
    
     $stmt = mysqli_prepare($conn, $sql);
     mysqli_stmt_bind_param(
         $stmt, 
         "sssss", 
         '%' . $searchWord . '%',
         '%' . $searchWord . '%',
         '%' . $searchWord . '%',
         '%' . $searchWord . '%',
         '%' . $searchWord . '%'
     );
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...