如何阻止查询类处理文本字符串中的问号?

时间:2010-03-04 22:13:42

标签: php sql phpquery

相当新的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。我确定有很多我不知道的术语,请在给我答案时记住这一点。

2 个答案:

答案 0 :(得分:2)

您希望准备好的语句$sqlString?放在$textVar$text2var,然后您需要将它们绑定到语句中。

它将它们视为占位符,因为在准备SQL时它们看起来像占位符

所以:

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

您应该查看MySQL Prepared Statements并熟悉它们的工作原理以及它们提供的好处。

答案 1 :(得分:0)

它看起来像某些PDO衍生物,所以它应该更像是:

$qry = new SQLQuery;
$sqlString = 'SELECT * FROM database.table WHERE table.text=? AND table.text2=?'
$qry->prepare($sqlString);
$qry->execute(array($textVar, $text2Var));