1

我已经在几个线程中看到了这个问题,但是我有机会尝试的建议已经奏效了。

我想将我的所有函数(和一些变量)存储在一个文件中,然后将该文件包含在我的页面中。这是我的includes.php:

<?php
$title = "Whatever Tattoos";

function databaseConnect()
{
$con = mysqli_connect('127.0.0.1', "test", "test", "tats");

if (mysqli_connect_errno())
{
    echo "Failed to connect to MySql: " . mysqli_connect_error();
}
}

?>

在我的测试中,我调用了 databaseConnect() 函数,但我的查询没有返回任何内容。如果我拉出代码并将其直接放入我的测试文件中,它就可以工作。我认为这是变量范围的问题,但我试图返回 $con 变量 - 不行;extract() $con 变量——不行;并将 $con 设置为 global - 不行。

更复杂的是,如果我像这样创建一个变量:

$test = "this is a test";

在函数内部,我可以在我的主代码中毫无问题地调用它。我难住了。有任何想法吗?

编辑:

这是查询代码:

databaseConnect();

$result = mysqli_query($con , "select * from test");
while($row = mysqli_fetch_array($result))
{
echo $row['test_text'];
}
4

2 回答 2

2

$con是不可访问的,因为它是在函数内而不是全局定义的,这意味着它不在mysqli_query. 尝试以下操作:

$con = NULL;
function databaseConnect()
{
    global $con;
    $con = mysqli_connect('localhost', 'username', 'password', 'db_name');

    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySql: " . mysqli_connect_error();
    }
}

这将使您$con几乎可以在任何地方使用。

于 2013-03-09T22:48:11.173 回答
0

解决这个问题很容易!您必须在函数中使用“return”。如果不使用“return”,则返回数据将为空。

function databaseConnect()
{
$con = mysqli_connect('127.0.0.1', "test", "test", "tats");

if (mysqli_connect_errno())
{
echo "Failed to connect to MySql: " . mysqli_connect_error();
}
return $con;
}

调用函数:

  $con=databaseConnect();
于 2019-06-10T17:39:36.863 回答