2011-05-21 10 views
-1

データベースに文字列を入力する必要があります。この文字列には'が含まれています。addslashes(を使用するまで入力できませんでした。データベースに挿入するためのL\'Arcaddslashes機能データベースからデータを取得しようとすると実際にスラッシュが追加されます

を私はPDOを使用します。addslashes()で操作文字列を表示しようとしたときにそれを表示しようと後で私が得たとき、しかし、後でユーザーにはスラッシュ

$this->adresse=addslashes($this->adresse);//example : L'Arc 

が表示されますこのように:

$req=$bdd->prepare('Insert into ... 

私は、クエリにこのcaracter 'を防ぐために、他の側に私は\が文字列で表示されることを望んでいないしたい、私を助けてくださいすることができます。

+0

準備する残りの文章は何ですか?準備された文パラメータを使用していますか? – outis

答えて

0

addslashesは、データベースとやりとりするときには使用しないでください。 DBドライバが提供する引用機能は、addslashesよりも優先されます。優先引用符機能はプリペアドステートメントパラメータであり、注入攻撃を防ぎます。また、パラメータを忘れることはできませんが、見積もりを忘れることはありません。たとえば、次の配列にオブジェクトをキャストし、executeにそれを渡すと、あなたのDALに適していることを

$thing = new StdClass; 
$thing->foo = 'bar'; 
$thing->addresse = 'anywhere'; 
$req = $bdd->prepare('INSERT INTO table (addresse, foo) VALUES (:addresse, :foo)'); 
$req->execute((array) $thing); 

ありません。

1
$str = addslashes("dsa'ds'a''''ds'a'ds"); 
var_dump($str); //with slashes 
var_dump(stripslashes($str)); //without 

にaddslashesにstripslashes

もいくつかの文字列を置き換える次々に必要になることがあります「2つの単一引用符」でexpreimentとペアになります。

関連する問題