我正在尝试使用 PHP 中的自定义函数,以简化我手动执行的许多操作。我对自定义函数很陌生,所以我不确定这些限制。现在我正在尝试使用自定义函数使用 MySQLi 获取数据这是代码,然后我将解释这个问题:
function connect_db($db = 'db_username') {
iconv_set_encoding("internal_encoding", "UTF-8");
mb_language('uni');
mb_internal_encoding('UTF-8');
@ $mysqli = new mysqli('host',$db,'password',$db);
if(mysqli_connect_errno())
{
die('connection error');
}
}
这个似乎工作正常。这是我遇到更多麻烦的下一个功能。
编辑:感谢 Jeremy1026 的回复更新
function do_query($db = 'default_db', $query) {
connect_db();
$result = $mysqli->query($query);
if(!$result){
trigger_error("data selection error");
}
while($row = $result->fetch_assoc()){
$result_array[] = $row;
}
return $result_array;
}
我的主机强制数据库名称和用户名相同,所以如果数据库名称是“bob”,那么访问它的用户名也将是“bob”,这就是为什么$db
在连接中出现两次的原因。
我遇到的问题是这两个函数在functions.php
另一个页面中并被调用。我希望能够根据列名从其他页面中的查询中提取结果。但是我还需要能够通过格式化来做到这一点,所以也许while()
循环必须发生在那个页面上而不是函数中?无论页面或数据如何,我都希望它尽可能通用,以便我可以将这两个函数用于我为该站点运行的三个数据库的所有连接和所有查询。
上帝,我希望我很清楚。
非常感谢您的任何建议。我用谷歌搜索了一下,但是很难找到任何不使用过时mysql_
前缀的东西,或者任何实际上以我可以使用的方式返回数据的东西。
更新:我现在在访问相关页面时遇到以下错误:
致命错误:在/functions.php中的非对象上调用成员函数 query() `
有问题的行是$result = $mysqli->query($query);
. 我认为这是因为它认为$query
是未定义的,但它不应该通过在页面中调用来获取定义吗?这是该页面的代码:
$query = "SELECT * FROM `table`";
$myArray = do_query($db, $query);
echo $myArray['column_name'];