php - 将 json 对象插入到 oracle db 表 blob 列中
问题描述
以下在开发控制台中发布为POST: 404。我猜我的 php 不正确。我在这里做错了什么?
在这个 JS 方面,我正在做:
........
user = JSON.stringify(user); // updated Data, want to push to db table blob column
pushData ();
function pushData (){
const ajax = $.ajax({
method: 'POST',
url: `./Settings.php`,
data: {obj_json: JSON.stringify(user) },
dataType: "json",
success: function(result) {
//Write your code here
console.log("data posted?");
}
});
}
.....
/Settings.php (使用的类具有有效的数据库连接,myobj_json
是blob
在 db 表中设置的列)。我真的不知道该怎么办$obj
class Settingz extends \myApp\Data
{
public function insertBlob($obj, $last_update) {
$obj = $_POST['obj_json'];
$sql = "INSERT INTO MY_TABLE(last_update,obj_json) VALUES(:last_update,:obj_json)";
$stmt = $this->pdo->prepare($sql);
$stmt->bindParam(':last_update', $last_update);
$stmt->bindParam(':obj_json', $blob, PDO::PARAM_LOB);
return $stmt->execute();
}
}
解决方案
使用 OCI8,您可以使用临时 LOB(请参阅The Underground PHP and Oracle Manual的第235 页),但使用 PDO_OCI,请使用RETURNING
如下子句:
<?php
try {
$db = new PDO('oci:dbname=localhost/orclpdb1', 'cj', 'welcome');
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
exit;
}
$stmt = $db->prepare("drop table cjblob");
$stmt->execute();
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare("create table cjblob (id number, data blob)");
$stmt->execute();
function do_insert($db, $id, $data)
{
$stmt = $db->prepare("insert into cjblob (id, data) values (:id, empty_blob()) returning data into :blob");
$stmt->bindParam(':id', $id);
$stmt->bindParam(':blob', $blob, PDO::PARAM_LOB);
$blob = null;
$db->beginTransaction();
$stmt->execute();
// var_dump($blob); // $blob becomes a stream
fwrite($blob, $data);
fclose($blob);
$db->commit();
}
do_insert($db, 1, str_pad("Z", 40000, "Z"));
// Fetch it back
$stmt = $db->prepare('select data from cjblob where id = ?');
$id = 1;
$stmt->execute(array($id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($row);
var_dump(stream_get_contents($row['DATA']));
?>
推荐阅读
- php - Heroku:如何部署与 PHP API REST 连接的 Angular 应用程序以获取数据?
- firebase - React Native :: 构建错误 | 依赖不兼容
- parquet - PyArrow 从 S3 中的文件获取元数据
- python - Python:编写高效的条件检查
- python-3.x - 无法在熊猫中读取 csv 文件
- r - R如何使用我正在创建的列中的先前值
- javascript - React Router v6 错误:道具类型失败:道具“位置”在“路由器”中标记为必需,但其值为“未定义”
- c# - 如何在 C# 中发布带有其数据库的 Windows 窗体应用程序
- python - 在 PySpark 中将整数列转换为字符串 IP
- google-analytics - 如何在网络中为谷歌分析 cookie 设置 httponly 标志