我正在使用phpdao进行数据库操作。 当我运行此代码时出现错误
function queryByContentAndCreatedBy($city,$min,$max){
$sql = "SELECT id FROM users WHERE city=? LIMIT ?,? ";
$sqlQuery = new SqlQuery($sql);
$sqlQuery->setString($city);
$sqlQuery->setNumber($min);
$sqlQuery->setNumber($max);
return $this->executeUpdate($sqlQuery);
}
public static function executeUpdate($sqlQuery){
$transaction = Transaction::getCurrentTransaction();
if(!$transaction){
$connection = new Connection();
}else{
$connection = $transaction->getConnection();
}
$query = $sqlQuery->getQuery();
$result = $connection->executeQuery($query);
if(!$result){
throw new Exception(mysql_error());
}
return mysql_affected_rows();
}
Connection.php
public function executeQuery($sql){
return mysql_query($sql, $this->connection);
}
然后出现错误:
You have an error in your SQL syntax ... near ('Pu\'m','d\'Artagnan','s\dsd') at line 1
此查询的类似错误
$sql = "SELECT id FROM users WHERE city IN (?,?)";
在PDO中,这是一个解决方案:see details
$dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
对于我的dao来说,什么是相同的解决方案?
答案 0 :(得分:0)
如果您的“phpdao”没有setArray()
方法,则必须手动创建查询。
(?,?,?,?,?,?)
的字符串,其中?s的数量等于数组成员的数量。答案 1 :(得分:-1)
LIMIT start, amount
- 您将其用作LIMIT start, end
。$sqlQuery->setStrig
- 这可能不对。$city
是一个数组吗?在这种情况下,您可能希望改为使用WHERE city IN ?
。