似乎当SQL查询最后有分号时,准备/执行语句失败。我得到 ORA-00911:无效字符错误。如果这是一个pdo_oci驱动程序错误,我想知道什么?有没有人遇到过这个问题? 例如:
try{
$conn = new PDO($dsn,$db_username,$db_password,$options);
}catch(PDOException $e)
{
echo ($e->getMessage());
}
try{
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sqlQuery = 'SELECT "object" FROM "statements" WHERE "subject" = ? and "predicate" = ?;';
$sth = $conn->prepare($sqlQuery);
$sth->execute(array('http://192.168.1.234/taooracle/tao_ora_dev.rdf#i1386330868934416', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'));
while ($row = $sth->fetch()){
$uri = $row['object'];
echo $uri;
}
}catch(PDOException $e){
print $e->getMessage() ."<br />";
print $e->getLine() ."<br />";
}
SQLSTATE[HY000]: General error: 911 OCIStmtExecute: ORA-00911: invalid character
删除分号很容易,但是有更多这样的查询,我想要有更好的选择。
答案 0 :(得分:1)
这不是一个错误,这是应该的。结尾分号不是SQL的一部分,它只是sqlplus,mysql等程序的标记,或者是一个语句完成的任何内容。因此,您不应该在代码中使用这些分号。
我知道,mysql会接受它们,可能是因为开发人员在回答了太多“为什么不起作用?”之后就把它放进去了。的问题。但正确的方法是从代码中删除分号 - mysql接受它们的事实比其他数据库没有的事实更多: - )