我已经在几个主题中看到了这个问题,但我有机会尝试的建议已经有效了。
我想将所有函数(和一些变量)存储在一个文件中,然后在我的页面中包含该文件。这是我的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 - no go。
使问题复杂化,如果我创建一个这样的变量:
$test = "this is a test";
在函数内部,我可以在我的主代码中调用它没有问题。我很难过。有什么想法吗?
编辑:
这是查询代码:
databaseConnect();
$result = mysqli_query($con , "select * from test");
while($row = mysqli_fetch_array($result))
{
echo $row['test_text'];
}
答案 0 :(得分: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
。
答案 1 :(得分: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();