这是在Oracle数据库中插入行的正确方法吗?

时间:2012-02-08 20:20:49

标签: php sql oracle zend-framework insert

我已经创建了一个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

请帮我解决这个问题。谢谢!

2 个答案:

答案 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();