Próbuję napisać skrypt PHP z MySQLi do kwerendy bazy danych.Jak wykonać zapytanie do bazy danych w PHP i zwrócić wyniki na podstawie danych wprowadzonych przez użytkownika?
Chciałbym, aby dane wejściowe użytkownika można było sprawdzić w bazie danych, a następnie zwrócić wynik z kolumny "koniugacja", jeśli w kolumnie "root" tabeli "normal_verbs" znajduje się wpis .
Więc jeśli dane wprowadzane przez użytkownika są podobne do "foobar", a kolumna główna ma "foo", chciałbym, aby zobaczyło 'foo' w 'foobar' i zwróciło wartość 'koniugacji' w tym rząd.
Nie mogę sprawić, aby zapytanie zadziałało tak, jak chcę. Ten, którego używam poniżej jest w zasadzie tylko symbolem zastępczym. Nie do końca rozumiem, dlaczego to nie działa.
Co próbuję, to:
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);
To nie daje mi żadnych błędów, więc myślę, że połączenia z bazą danych.
EDIT2: Myliłem się. Brakowało mi czegoś oczywistego z powodu nieporozumienia MySQLi i odpowiednio zredagowałem kod. Tak więc powyższy kod działa w tym, że łączy się z bazą danych i zwraca wynik, ale nadal jestem zakwestionowany na wiarygodnej instrukcji SQL, aby zrobić to, co chcę zrobić.
Jeśli te cudzysłowy są tam dostajesz błędy składniowe, są w dziennikach. Dodaj raport błędów do początku pliku (ów) zaraz po otwierającym tag ' Php' error_reporting (E_ALL); ini_set ('display_errors', 1); ' –
[Twój skrypt jest zagrożony atakami SQL Injection.] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) Zapoznaj się z instrukcjami [przygotowanymi] (http://en.wikipedia.org/wiki/Prepared_statement) dla [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) . –
Uruchamiasz zapytanie, ale nie pobierasz z niego danych za pomocą polecenia 'fetch()' –