0
$keywords = explode("\n",$_POST['keywords']);

//Inserting into Database
foreach($keywords as $key => $keyword){
    $keyword = strtolower(trim($keyword));
    $keyword = preg_replace("/[^A-Za-z0-9' ]/", "", $keyword);
    $keyword = preg_replace("/\s+/", " ", $keyword);
    $insertkeywords = "INSERT IGNORE INTO kwdb (keyword) VALUES ('$keyword')";
        mysql_query($insertkeywords);
}

次のコードにアポストロフィがあるのに、なぜこのコードがキーワードをデータベースに挿入しないのか、私には一生わかりません。

"/[^A-Za-z0-9' ]/"

しかし、それを削除すると:

"/[^A-Za-z0-9 ]/"

このスクリプトは、レコードをデータベースに挿入します。

私は何をしようとしていますか? フォームにテキストエリアがあります。新しい行のキーワードごとに、\n に基づいて分解します。キーワードから非文字および非数字をすべて削除したいのですが、アポストロフィは削除したくありません。

私は基本的に、すべてのキーワードを小文字にし、先頭、末尾、および余分な空白 (2 つ以上の空白を 1 つに切り詰めたもの) を小文字にして、アポストロフィを除く文字および数字以外の文字を削除したいと考えています。

4

2 に答える 2

0

ありがとうクローバー。あなたの助けがなければ、それを理解するのに何時間もかかったでしょう! mysql_real_escape_stringの代わりにmysqli_real_escape_stringを使用することになりました。これは、mysql_real_escape_string が PHP 5.5.0 の時点で非推奨であると述べているためです。その結果、少し変更する必要がありましたが、これまでのところ、以下のコードはうまく機能しているようです (他の誰かがこれに出くわした場合)。

$con = mysqli_connect("localhost","username","password");
if (!$con)
  {
  die('Could not connect: ' . mysqli_error());
  }
else
    {
echo "Connected Successfully!";
}
//select database
mysqli_select_db($con, "test");

$keywords = explode("\n",$_POST['keywords']);

//Inserting into Database
foreach($keywords as $key => $keyword){
    $keyword = preg_replace("/[^A-Za-z0-9' ]/", " ", $keyword);
    $keyword = preg_replace("/\s+/", " ", $keyword);
    $keyword = strtolower(trim($keyword));
    //$insertkeywords = "INSERT IGNORE INTO kwdb (keyword) VALUES ('$keyword')";
    $insertkeywords = "INSERT IGNORE INTO kwdb (keyword) VALUES ('".mysqli_real_escape_string($con, $keyword)."')";
        mysqli_query($con, $insertkeywords);
}
于 2013-01-20T18:53:16.950 に答える
0

キーワードをエスケープする必要があります: $insertkeywords = "INSERT IGNORE INTO kwdb (keyword) VALUES ('".mysql_real_escape_string($keyword)."')";

于 2013-01-20T10:56:39.753 に答える