0

PHP を使用して、アポストロフィなどの特殊文字を含む名前を mysql データベースに挿入しようとしています。例えば:

INSERT INTO PLAYERS VALUES('{$players[$n][1]}','$nom_team');

whereは、など$playersの名前を含む配列です。しかし、これはエラーになります。N'ZogbiaN'Diaye

私はaddslashes関数を使ってみました:

$players[$n][1] = addslashes( $players[$n][1] );

しかし、これは正しく機能しません。データベースに保存されるのはN\'Zogbia、または場合によってはN\\\\\\\\\\'Diayeです。

問題を解決するためのアイデアが不足しています。皆さんが私を助けてくれることを願っています。

4

2 に答える 2

0

考えられるケースは2つ

  1. あなたは魔法の引用符を持っています。それらをオフにします。
  2. すべての入力データに対して何らかの種類のSanitize They All関数が実行されます。それを取り除く。
于 2013-02-16T16:48:44.463 に答える
-1

準備済みステートメントを使用できます。

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$city = "N'Zogbia";

/* create a prepared statement */
if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "s", $city);

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $district);

    /* fetch value */
    mysqli_stmt_fetch($stmt);

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>
于 2013-02-16T16:50:08.480 に答える