我已经创建了一个Web应用程序,它将使用PHP将行插入Oracle数据库。我正在使用Zend Framework连接到数据库。当我测试它时,我没有得到任何错误,但我没有看到表中添加的行。
这是我的代码:
$remote = $_SERVER['REMOTE_ADDR'];
// Connect with PDO
$db = Zend_Db::factory('PDO_OCI',
array(
'dbname' => $dbname,
'username' => $dbuser,
'password' => $dbpass
)
);
$req = "INSERT INTO " . $dbtable . " (id, url, adddate, addip) VALUES ('', '" . $safeurl . "', SYSDATE, '" . $remote . "')";
$res = $db->prepare($req);
$res->execute();
$safeurl
由用户输入生成,并进行清理。
插入行时会自动生成id
。
请帮我解决这个问题。谢谢!
答案 0 :(得分:3)
你必须承诺。每次更新/插入/删除都会在未启动时开始新事务。因此,在插入记录(或一堆记录)后发出另一个COMMIT
语句。 Oracle没有自动提交模式。
答案 1 :(得分:0)
后
$res = $db->prepare($req);
执行echo $req->__toString();
以获取生成的查询,然后将其复制并在SQL Plus中执行
如果它有效,那么你唯一的问题是你需要提交:
$db->beginTransaction();
$req = "INSERT INTO " . $dbtable . " (id, url, adddate, addip) VALUES ('', '" . $safeurl . "', SYSDATE, '" . $remote . "')";
$res = $db->prepare($req);
$res->execute();
$db->commit();