PHP函数执行SQL查询无法正常工作

时间:2014-04-25 08:38:41

标签: php sql

我正在尝试使用函数执行SQL查询并返回结果。使用与下面相同的查询进行手动SQL查询工作并返回正确的结果,但在PHP中执行它根本不起作用(页面为空白)。

connection.php

<?php

require_once("settings.php");

$conn = oci_connect($db_user, $db_pass, $db_ip.'/'.$db);
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

?>

的functions.php

<?php

require_once("connection.php");

function GetInvoice($n) 
   // returns invoice number for given order number
{ 
   $stid = oci_parse($conn, 'SELECT InvoiceNo FROM Orders WHERE OrderNo = $n');

   oci_define_by_name($stid, 'InvoiceNo', $InvoiceNo);

   oci_execute($stid);

   echo "$InvoiceNo";
} 

GetInvoice(999645);

?>

执行手动SQL查询会显示结果InvoiceNo,它只是在PHP中不起作用。

由于

史蒂夫

2 个答案:

答案 0 :(得分:1)

您正在尝试在函数内部使用函数外部的变量。该变量不在函数范围内。因此,$conn未定义。另外,你使用了$InvoiceNo withoud fetch结果,我在那个地方做了一些重新训练。您可以使用以下内容;

function GetInvoice($n, $conn) 
   // returns invoice number for given order number
{ 
   $stid = oci_parse($conn, 'SELECT InvoiceNo FROM Orders WHERE OrderNo = $n');

   oci_define_by_name($stid, 'InvoiceNo', $InvoiceNo);

   oci_execute($stid);

   while (oci_fetch($stid)) {
       echo "$InvoiceNo";
   }
}

GetInvoice(999645, $conn);

答案 1 :(得分:0)

您在函数中传递的参数似乎未定义

因为你创建了你的函数只需要一个参数,然后从这里得到这个变量$InvoiceNo

oci_define_by_name($stid, 'InvoiceNo', $InvoiceNo);