我是PHP新手。我试图将数据插入表中。在运行该程序时,它显示成功,但在检查oracle 10g数据库时,它显示 未找到数据 。创建表时发生了同样的事情,它显示 表或视图不存在。
这是我的代码=
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<h1><u>Inserting data into Table</u></h1>
<?php
// Create connection
$conn = oci_connect('SYSTEM', 'xxxx', 'localhost/XE');
// Check connection
if (!$conn) {
die("Connection failed: " . oci_error());
}
$sql = "insert into MYGUESTS (ID, FIRSTNAME, LASTNAME, EMAIL) values (12, 'John', 'Doe', 'john@example.com')";
$stid=oci_parse($conn, $sql);
if(!$stid){
$e=oci_error($conn);
trigger_error(htmlentities($e[message],ENT_QUOTES),E_USER_ERROR);
}
else
{
echo "Successfull";
}
oci_close($conn);
?>
</body>
</html>
为什么我在oracle数据库中看不到任何数据?问题出在哪里?
答案 0 :(得分:0)
您遗失了commit
和execute
来自php.net的OCI示例:
<?php
// Insert into several tables, rolling back the changes if an error occurs
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
$stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");
// The OCI_NO_AUTO_COMMIT flag tells Oracle not to commit the INSERT immediately
// Use OCI_DEFAULT as the flag for PHP <= 5.3.1. The two flags are equivalent
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!$r) {
$e = oci_error($stid);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
$stid = oci_parse($conn, 'INSERT INTO myschedule (startday) VALUES (12)');
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!$r) {
$e = oci_error($stid);
oci_rollback($conn); // rollback changes to both tables
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
// Commit the changes to both tables
$r = oci_commit($conn);
if (!$r) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>