【发布时间】:2025-11-28 13:00:01
【问题描述】:
使用oci_8 在 oracle DB 中插入数据。插入带有特殊字符或引号的字符串的示例查询
update TABLENAME set COMMENTS = 'As per Mark's email dated 28-Feb-2015 - Bill Gates & Team's effort' where ID = 99;
插入/更新
$query = 'update TABLENAME set COMMENTS = '$_POST[comments]';
$result = customexecute($new_query);
public function customexecute($query)
{
$resutlt = parent::customquery($query);
return $resutlt;
}
public static function customquery($query)
{
try{
$stmt = oci_parse($conn, $query);
oci_execute($stmt,OCI_COMMIT_ON_SUCCESS);
oci_commit(db_singleton::getInstance());
oci_free_statement($stmt);
}catch (Exception $e)
{
print_r($e);
}
}
在 ORACLE DB 上执行它说SQl command not properly ended. 查看Parameterized queries 提到here 但无法成功集成。
$query = 'UPDATE tablename SET field = :field WHERE id = :id';
$stmt = oci_parse($oracleConnection, $query);
oci_bind_by_name($stmt, ':field', "The field value with 'apostrophes' and so");
oci_bind_by_name($stmt, ':id', '125');
$result = oci_execute($stmt);
我可以在控制器中的查询中传递:bind_comments。但是$stmt 驻留在我的 db_singleton 文件中(一般适用于所有数据库查询),不能单独传递给单个查询。
如何清理用户输入或不允许在创建 SQL 代码时使用数据
【问题讨论】:
-
你能发一个完整的sn-p吗?我缺少创建 SQL 字符串 (
$query) 和绑定部分的代码。 -
@Mureinik 检查sn-p。
标签: php oracle prepared-statement oracle-call-interface