【问题标题】:How can i convert a insert query from php-mysql to php-oracle?如何将插入查询从 php-mysql 转换为 php-oracle?
【发布时间】:2014-10-15 22:54:02
【问题描述】:

我有这个 mysql 查询:

$ideventoPrecedente = 1; 
$data = date ("Y/m/d");
4orario = date ("Y/m/d H:m");
$creator = 3;
$patient = 3; 
$bisogno = "i need something";

$qevento= $db->prepare(INSERT INTO event(ideventoPrecedente, data, orario, creatoreEvento, paziente, bisogno ) VALUES(:ideventoPrecedente, :data, :orario, :creator, :patient, :bisogno) );

$qevento->execute($ideventoPrecedente, $data, $orario, $creator, $patient, $bisogno);

我想知道如何将其转换为 Oracle 数据库查询。

我找到了这段代码,但它不起作用:

    $stid = oci_parse($dbconn, 'INSERT INTO  evento (ideventoPrecedente, data, orario, creatoreEvento, paziente, bisogno) values 
    ($ideventoPrecedente, $data, $orario, $creator, $patient, $bisogno)' );

    oci_execute($stid);

错误:

Warning: oci_execute(): ORA-00911: invalid character in F:\wamp\www\ginevracrm\index.php on line

Warning: oci_fetch_array(): ORA-24374: define not done before fetch or execute and fetch 

【问题讨论】:

  • 您需要使用 oci_connect() 打开连接。使用 oci_bind_by_name() 绑定您的参数。 oci_parse() 来解析您的语句。最近,oci_execute() 来执行语句句柄。
  • 这是代码? OCIBindByName($stid, ":bind1", $crea); OCIBindByName($stid, ":bind2", $idricovero);是否有可能在唯一的一行中获得相同的代码?
  • 所以如果我有 20 个变量,我必须写 20 次 oci_bind_by_name() ?

标签: php mysql oracle


【解决方案1】:

在您的帖子中,我认为您的尝试可能不起作用,因为您的 SQL 语句中的变量用单引号括起来,因此解释器没有将它们解析为它们的实际值。您可以尝试修复该问题并重新尝试。

您的里程可能会有所不同,但这是(未经测试的)如何做您想做的事情的要点。

// Open your database connection
$connection = oci_connect($username, $password, $database);

// Parse your SQL statement
$stmt = oci_parse($connection, "INSERT INTO evento (ideventoPrecedente, data, orario, creatoreEvento, paziente, bisogno) VALUES 
(:ideventoPrecedente, TO_DATE(:data, 'YYYY/MM/DD'), TO_DATE(:orario, 'YYYY/MM/DD HH:MI'), :creator, :patient, :bisogno)";

// Define your variables needed for your parsed SQL statement
$ideventoPrecedente = 1; 
$data = date ("Y/m/d");
$orario = date ("Y/m/d H:m");
$creator = 3;
$patient = 3; 
$bisogno = "i need something";

// Bind the variables to the parsed statement
oci_bind_by_name($stmt, ':ideventoPrecedente', $ideventoPrecedente, -1, SQLT_INT);
oci_bind_by_name($stmt, ':data', $data, -1, SQLT_CHR);
oci_bind_by_name($stmt, ':orario', $orario, -1, SQLT_CHR);
oci_bind_by_name($stmt, ':creator', $creator, -1, SQLT_INT);
oci_bind_by_name($stmt, ':patient', $patient, -1, SQLT_INT);
oci_bind_by_name($stmt, ':bisogno', $bisogno, -1, SQLT_CHR);

// Execute the statement
oci_execute($stmt);

【讨论】:

    猜你喜欢
    • 2017-10-18
    • 1970-01-01
    • 2019-07-29
    • 2018-11-01
    • 2013-07-10
    • 2013-09-06
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多