ORA-00900:PHP中无效的SQL语句,但在sqlplus中有效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA-00900:PHP中无效的SQL语句,但在sqlplus中有效相关的知识,希望对你有一定的参考价值。
我正在尝试使用php执行的.sql文件中有一个SQL查询,但这给了我标题中提到的错误。但是,当我将其粘贴到sqlplus或从那里运行文件时,一切都很好。这是查询:
SELECT name,
followers,
friends,
Nvl(no_of_tweets, 0) statuses,
Nvl(mentioned, 0) mentioned,
rts,
Nvl(favs, 0) favs,
( ( 10 * followers + 5 * friends + 12 * Nvl(no_of_tweets, 0) + 15 *
Nvl(mentioned, 0) + 14 * rts + 15 * Nvl(favs, 0) ) / 10 ) h_index
FROM users U
left join (SELECT T.user_id_str,
Count(*) AS no_of_tweets,
SUM(retweets) rts,
SUM(favorites) favs,
mentioned
FROM tweets T
left join (SELECT user_id_str,
Count(*) AS mentioned
FROM mentions
GROUP BY user_id_str) M
ON T.user_id_str = M.user_id_str
GROUP BY T.user_id_str,
mentioned) C
ON U.user_id_str = C.user_id_str
ORDER BY h_index DESC;
哪些调试方法可以帮助我发现问题,或者此命令出了什么问题?
这是我的PHP代码:
$query = ':sql';
$st_sql = oci_parse($con, $query);
oci_bind_by_name($st_sql, ':sql', file_get_contents($path));
$r = oci_execute($st_sql);
if (!$r) {
$e = oci_error($st_sql);
echo $e['message'];
}
答案
您不能将查询绑定到参数。只需将查询从文件加载到$query
变量中即可:
$query = file_get_contents($path);
$st_sql = oci_parse($con, $query);
$r = oci_execute($st_sql);
以上是关于ORA-00900:PHP中无效的SQL语句,但在sqlplus中有效的主要内容,如果未能解决你的问题,请参考以下文章
如何找出 datagrip 中的 ORA-00900 无效 SQL 语句
使用简单循环插入时出现“ORA-00900 无效 SQL 语句”
SQLSyntaxErrorException: ORA-00900: 使用 Java 的无效 SQL 语句
Oracle.DataAccess.Client.OracleException: ORA-00900: 无效的 SQL 语句