Alles richtig +Beispiele
bearbeitet von> > 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:**
> 
> ~~~PHP
> $_GET['search'] = "Gene Roddenberry's Andromeda";
> $mysqli = mysqli_connect( ... );
> ~~~
> 
> **Man will:**
> 
> ~~~SQL
> SELECT
>    title, isbn, author, price
> FROM books
> WHERE title SOUNDS LIKE 'Gene Roddenberry\'s Andromeda'
> ~~~
> 
> [**Man nehme also:**](https://www.php.net/manual/de/mysqli.real-escape-string.php)
> 
> ~~~PHP
> $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",
>        htmlspezialchars( $row['title'] ),
>        htmlspezialchars( $row['isbn'] ),
>        htmlspezialchars( $row['author'] ),
>        100 * $row['price'];
>     );    
> }
> ~~~
> 
> [**Oder**](https://www.php.net/manual/de/mysqli.prepare.php):
> 
> 
> ~~~PHP
> $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",
>        htmlspezialchars( $title ),
>        htmlspezialchars( $isbn ),
>        htmlspezialchars( $author ),
>        100 * $price;
>     );
> }
Verstehe ich nicht, bin ich zu dumm für!