代码之家  ›  专栏  ›  技术社区  ›  invertedSpear

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

  •  0
  • invertedSpear  · 技术社区  · 15 年前

    我们运行查询的方式基本上是这样的:

    $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 可以合法地在它们的文本中包含问号(?),这会导致query SQLQuery类中断,将问号视为变量我不会传递它。

    那么,如何指示SQLQuery类忽略问号呢?

    2 回复  |  直到 15 年前
        1
  •  2
  •   jasonbar    15 年前

    你想要你准备好的陈述 $sqlString 拥有 ? $textVar $text2var ,然后需要将它们绑定到语句。

    它把它们当作占位符是因为 当您准备SQL时。

    所以:

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

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

        2
  •  0
  •   Kris    15 年前

    它看起来有点像PDO的衍生物,所以它应该更像:

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