どのように私は私のテキスト文字列で疑問符を処理することから、クエリクラスを防ぐのですか?

StackOverflow https://stackoverflow.com/questions/2383128

  •  24-09-2019
  •  | 
  •  

質問

PHPのではなく、新たな

、これは愚かなようであればとても残念。私は本当に私の会社で、他の開発者から以前に書かれたコードから、このたくさんのをコピーしています。

私たちはクエリを実行する方法は、次のように基本的には次のとおりです。

$qry = new SQLQuery;
$sqlString = "SELECT * FROM database.table WHERE table.text = '" . 
              $textVar . "' and table.text2 = '" . $text2Var."'";
$qry->prepare(String::Condense($sqlString));
$qry->execute();

私がいる問題はその$textVarまたは$text2Varが合法的に自分のテキストの一部としてそれらの中に疑問符(?)を持っていることがあり、これは、クエリのSQLQueryクラスは、私はありません変数として疑問符を治療破る原因になっていますそれを渡します。

それでは、どのように私は?疑問符を無視するのSQLQueryクラスを指示することができます。

p.s。私に答えを与えるとき、私は確信している用語は、私が知らないことを、このたくさんのがありますよ、心の中でそれを保管してください。

役に立ちましたか?

解決

あなたは$sqlString?を入れている$textVarを持っているあなたのプリペアドステートメントの$text2varをしたいし、次にあなたが声明にそれらをバインドする必要があります。

は、彼らがプレースホルダのように見えるので、

これは、プレースホルダとして扱うののあなたのSQLを準備するときます。

ですからます:

$sqlString = "SELECT * FROM database.table WHERE table.text = ? and table.text2 = ?"

あなたはを見てみる必要があるの MySQLは準備しましたステートメントを、彼らがどのように動作するかを理解し、どのようにそれらが提供するメリットます。

他のヒント

:それはおそらくより多くのようなものでなければなりませんので、

これはちょっといくつかのPDO誘導体のように見えます

$qry = new SQLQuery;
$sqlString = 'SELECT * FROM database.table WHERE table.text=? AND table.text2=?'
$qry->prepare($sqlString);
$qry->execute(array($textVar, $text2Var));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top