Confronto valori select con database

Ciao a tutti,

vorrei controllare se una valore passato da una select è presente nel database, ho fatto così:

//mi connetto
$valore_inserito = $conn->real_escape_string($valore_inserito);
$query = "SELECT * FROM comuni WHERE nome='$valore_inserito' ";
$result = $conn->query($query);
$num = $result->num_rows;
if ($num !=0) return true;

Il problema sorge se passo un comune con l'apostrofo, se a $valore_inserito passo L'Aquila mi restituisce 0 righe, mentre con valori senza apostrofo funziona.

Ho modificato così ma il problema rimane:

$stmt = $conn->prepare("SELECT * FROM comune WHERE nome=?");

$stmt->bind_param('s', $valore_inserito);

$stmt->execute();

$stmt->store_result();

$num = $stmt->num_rows;

if ($num !=0) return true;

Ho anche provato ad aggiungere stripcslashes ma niente non capisco.

inviato 4 anni fa
Gioge
modificato 4 anni fa
X 0 X

Il problema sta nel fatto che nel database tu hai salvato il valore L'Aquila mentre dopo aver effettuato il real_excape_string dentro la variabile $valore_inserito tu ti ritrovi L/'Aquila e quindi quando vai ad effettuare la condizione di uguaglianza nella where della query ovviamente il risultato e' zero!

Ti consiglio caldamente di utilizzare i prepared statement per ovviare questo problema e evitare sql injection!

risposto 4 anni fa
JellyBelly
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda