Я пытаюсь написать сценарий 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, который делает то, что я хочу.
Пожалуйста, попробуйте это:
SELECT 'conjugation' FROM 'normal_verbs' WHERE " . $y . " LIKE CONCAT('%',root,'%')
Он выбирает все строки, где root содержит $ y в любом месте.
Кроме того, ваш код уязвим для SQL-инъекций. Пожалуйста посмотри Вот для дополнительной информации.
Попробуйте этот SQL-запрос, как это
SELECT `conjugation` from normal_verbs where `root` like '%$y%'