2016-02-12 25 views
5

Sto provando a scrivere uno script PHP con MySQLi per interrogare un database.Come posso interrogare un database in PHP e restituire i risultati in base all'integrazione dell'utente?

Mi piacerebbe se l'input dell'utente potesse essere verificato rispetto al database e quindi restituire un risultato dalla colonna 'conjugation' se la stringa nella colonna 'root' della tabella 'normal_verbs' è nell'input .

Quindi se l'input dell'utente è qualcosa come "foobar", e la root-column ha "foo", mi piacerebbe vedere "foo" in "foobar" e restituire quel valore di "conjugation" in quel riga.

Non riesco a sembrare che la query funzioni come vorrei. Quello che sto usando qui sotto è fondamentalmente solo un segnaposto. Non capisco del tutto perché non funzioni.

Quello che sto cercando, è questa:

 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); 

Non mi sta dando eventuali errori, quindi penso che sia la connessione al database.

EDIT2: mi sono sbagliato. Mi mancava qualcosa di ovvio a causa di incomprensioni con MySQLi e ho modificato il codice di conseguenza. Quindi il codice sopra riportato funziona in quanto si collega al database e restituisce un risultato, ma sono ancora costretto su una dichiarazione SQL valida per fare ciò che voglio che faccia.

+2

Se quelle citazioni graffe sono lì che stai ricevendo errori di sintassi, sono nei registri. Aggiungi segnalazione degli errori all'inizio dei tuoi file subito dopo l'apertura del tag '

+3

[Il tuo script è a rischio per gli attacchi SQL Injection.] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) Scopri le dichiarazioni [preparate] (http://en.wikipedia.org/wiki/Prepared_statement) per [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) . –

+0

Stai eseguendo la query, ma non recuperi i dati da essa con qualcosa come 'fetch()' –

risposta

4

Si prega di provare questo:

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

seleziona tutte le righe in cui radice contiene $ y ovunque.

Inoltre, il codice è vulnerabile alle iniezioni SQL. Si prega di guardare here per ulteriori informazioni.

+0

Grazie. Questo selezionerà tutte le righe in cui la tabella 'root' ha una sottostringa di $ y anziché la totalità di $ y? – DCM

+0

Sì, seleziona tutte le righe in cui è contenuto root in $ y. Se si desidera un solo risultato, è possibile ordinarli per alcuni parametri e limitarli a uno. –

+0

Ok, quindi questo più o meno ha funzionato per me, tranne che ho dovuto cambiare "+ $ y +" a (". $ Y."). Usare "+ $ y +" non stava facendo nulla. Mi piacerebbe sapere perché, ma sono solo felice che funzioni. Grazie! – DCM

0

Prova questa ricerca SQL Ti piace questa

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

Questo mi dà uno strano errore che mi dice che la variabile nella mia istruzione print_r non è ora definita. L'ho inserito come $ m = db_query ("SELECT' conjugation' da normal_verbs dove 'root' mi piace '% $ y%'"); Ho perso qualche segno di punteggiatura da qualche parte o qualcosa del genere? – DCM

+0

prova questo http://stackoverflow.com/questions/29266134/weird-error-in-phpmyadmin-it-is-installed-successfully-but-still-not-working problem soved –