require_once不在一个文件中工作但在另一个文件中工作

时间:2014-07-29 12:12:12

标签: php require-once

我在收到错误时遇到了这个奇怪的问题

  

未定义的变量:sqlConn

它不能成为DB问题的连接,因为它会喊出另一个错误,甚至更奇怪的是,在同一目录中的文件中相同的te require_once工作得很好。我甚至都不知道该怎么想。 这是一个(WORKING)文件:

<?php require_once("connect.php");?>
<html>
<head>...
..........
...<?php
foreach($sqlConn->query('SELECT * FROM permatable') as $row) {
echo "<tr><td>".$row["Art"]."</td><td>".$row["Ime"]."</td><td>".$row["Uvoz"]."</td><td>".$row["Opis"]."</td><td>".$row["Cijena"]."</td></tr>";
}
?>

另一个(获得错误):

<?php require_once("connect.php");?>
<?php

if(isset($_POST["AddFromDB"], $_POST["ArtNo"])){
    addExisting($_POST["ArtNo"]);
} 
else if(isset($_POST["AddNew"], $_POST["Art"], $_POST["ImeProizvoda"], $_POST["Dobava"], $_POST["Cijena"])){
    newItem($_POST["Art"], $_POST["ImeProizvoda"], $_POST["Dobava"], $_POST["Cijena"]);
}
if(isset($_POST["clearList"])){
    clearPermaTB();
} 
else if (!isset ($_POST)){
    echo "error";
}

//Dodaj postojeci proizvod
function addExisting ($Art) {
    echo "5";
    //Trazi u bazi
    $result_set = $sqlConn->query("SELECT Art, Ime, Uvoz, Opis, Cijena FROM proizvod WHERE Art = '{$Art}'");

所以,两者都在同一个目录中,两者都使用类似的代码,但由于某种原因,一个人得到了错误而另一个人得到了错误。

这是一个连接文件:

    //Database Connection
$sqlConn =  new mysqli($server, $user, $pass, $name);
if ($sqlConn->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
?>

我是否犯了sql语法错误?

1 个答案:

答案 0 :(得分:2)

那是因为sqlConn超出了范围 你试图从你的功能中调用它。

您可以将其作为参数传递给您的函数或使用global即使它不是一个好的设计

解决方案1:

addExisting(xxx, $sqlConn);
// ...
function addExisting($Art, $sqlConn)
{
   // use $sqlConn here
}

解决方案2:

addExisting(xxx);
// ...
function addExisting($Art)
{
   global $sqlConn;
   // use $sqlConn here
}