【发布时间】:2014-05-12 12:11:28
【问题描述】:
代码
$stid = oci_parse($conn, "SELECT c1 FROM t1 WHERE c2 = " . $_POST['username'] . " AND c3 = " . $_POST['password'] . "");
问题
我得到ORA-00904 和ORA-24374:
ORA-00904:字符串:无效标识符
ORA-24374: 在获取或执行和获取之前定义未完成
将代码中的$_POST 替换为$_POST 返回的固定字符串可停止错误。它必须是 $_POST 或我在代码中包含它的方式。
例如,$_POST['username'] 是 Doe,使用 $_POST['username'] 不起作用,但使用 Doe 可以。
【问题讨论】:
-
请勿使用此代码! SQL Injection 如果我将
1; drop table t1;放入密码字段,你认为会发生什么? -
我敢打赌Tom 知道所有 Oracle 数字错误代码,但凡人可能不知道。发布到论坛时请不要破坏错误代码。
-
@Uriel_SVK 正如我在下面对所谓的“答案”之一所说的那样,你假设太多了。
-
@user2656114 好吧,如果您使用参数化查询,那么引号不会有问题......
标签: php oracle oracle-call-interface