Das ist aber wirklich nur eine diffuse Vermutung, denn bei richtiger Verwendung von mysqli_real_escape_string() sollte gerade so etwas, was du beschreibst, nicht passieren.
Ein Beispiel sagt mehr als tausend Worte: (Ich hoffe, ich hab nichts falsch gemacht...)
Man hat:
$_GET['search'] = "Gene Roddenberry's Andromeda"; $mysqli = mysqli_connect( ... );
Man will:
SELECT title, isbn, author, price FROM books WHERE title SOUNDS LIKE 'Gene Roddenberry\'s Andromeda'
$sql = sprintf( "SELECT `title`, `isbn`, `author`, `price` FROM `books` WHERE `title` SOUNDS LIKE '%s'", $mysqli->real_escape_string( $_GET['search' ) ); $result = $mysqli->query( $sql ); $tdata = ''; while ( $row = $result->fetch_assoc() ) { $tdata .= sprintf ( "\t<tr><td>%s</td><td>%s</td><td>%s<td></td>€ %01.2f<td></tr>\n", htmlspecialchars( $row['title'] ), htmlspecialchars( $row['isbn'] ), htmlspecialchars( $row['author'] ), 100 * $row['price']; ); }
Oder:
$stmt = $mysqli->prepare( "SELECT `title` `isbn`, `author`, `price` FROM `books` WHERE `title` SOUNDS LIKE ?" ); $stmt->bind_param( "s", $_GET['search'] ); $stmt->execute(); $stmt->bind_result( $title, $isbn, $author, $price ); $tdata = ''; while ( $stmt->fetch() ) { $tdata .= sprintf ( "\t<tr><td>%s</td><td>%s</td><td>%s<td></td>€ %01.2f<td></tr>\n", htmlspecialchars( $title ), htmlspecialchars( $isbn ), htmlspecialchars( $author ), 100 * $price; ); }
Verstehe ich nicht, bin ich zu dumm für!
Edit Rolf B: Zitierten Tippfehler korrigiert