MySQL — Как я могу запросить базу данных на PHP и вернуть результаты на основе сопоставления ввода данных пользователем?

Я пытаюсь написать сценарий PHP с MySQLi для запроса базы данных.

Мне бы хотелось, чтобы пользовательский ввод мог быть проверен по базе данных, а затем возвращать результат из столбца «сопряжение», если во входном файле находится строка в столбце «корень» таблицы «normal_verbs».

Поэтому, если пользовательский ввод похож на «foobar», а корневой столбец имеет «foo», я бы хотел, чтобы он увидел «foo» в «foobar» и вернул значение «сопряжения» в этой строке.

Кажется, я не могу заставить запрос работать так, как я хочу. Тот, который я использую ниже, в основном просто заполнитель. Я не совсем понимаю, почему это не работает.

То, что я пытаюсь, это:

        function db_connect() {

static $connection;

if(!isset($connection)) {
$connection = mysqli_connect('localhost','user','password','Verb_Bank');
}

if($connection === false) {
return mysqli_connect_error();
}
return $connection;
}

function db_query($query) {
$connection = db_connect();
$result = mysqli_query($connection,$query);

return $result;
}

function db_quote($value) {
$connection = db_connect();
return "'" . mysqli_real_escape_string($connection,$value) . "'";
}
$m= db_query("SELECT `conjugation` from normal_verbs where `root` in (" . $y . ")");
if($m === false) {
// Handle failure - log the error, notify administrator, etc.
} else {
// Fetch all the rows in an array
$rows = array();
while ($row = mysqli_fetch_assoc($m)) {
$rows[] = $row;
}
}
print_r ($rows);

Это не дает мне никаких ошибок, поэтому я думаю, что он подключается к базе данных.

EDIT2: я был не прав. Я упустил что-то очевидное из-за неправильного понимания MySQLi и соответственно отредактировал код. Таким образом, приведенный выше код работает в том смысле, что он подключается к базе данных и возвращает результат, но я все еще нахожусь в тупике от жизнеспособного оператора SQL, который делает то, что я хочу.

5

Решение

Пожалуйста, попробуйте это:

SELECT 'conjugation' FROM 'normal_verbs' WHERE " . $y . " LIKE CONCAT('%',root,'%')

Он выбирает все строки, где root содержит $ y в любом месте.

Кроме того, ваш код уязвим для SQL-инъекций. Пожалуйста посмотри Вот для дополнительной информации.

4

Другие решения

Попробуйте этот SQL-запрос, как это

SELECT `conjugation` from normal_verbs where `root` like '%$y%'
0

По вопросам рекламы [email protected]