Php 错误:";mysqli_query()要求参数1为mysqli,在“…”中为空;
我的PHP代码中有些东西不起作用。函数Php 错误:";mysqli_query()要求参数1为mysqli,在“…”中为空;,php,mysql,mysqli,Php,Mysql,Mysqli,我的PHP代码中有些东西不起作用。函数db\u query()中的函数mysqli\u query()无法访问先前定义的变量链接。为什么? <?php $link = mysqli_connect($hostname, $username, $password,$database); function db_query($sql) { return mysqli_query($link ,$sql); } db_query('SELECT name FROM users LIM
db\u query()
中的函数mysqli\u query()
无法访问先前定义的变量链接
。为什么?
<?php
$link = mysqli_connect($hostname, $username, $password,$database);
function db_query($sql) {
return mysqli_query($link ,$sql);
}
db_query('SELECT name FROM users LIMIT 1');
这是一个范围问题
必须是函数db\u query($db\u conn,$sql){这是一个范围问题
必须是函数db\u query($db\u conn,$sql){
我希望这能奏效
我希望这对将来研究这个问题的人有用: 在PHP中,您不能像上面看到的那样访问函数之外的变量 去了解更多 对于这个问题有很多解决方案,但我更喜欢在这里向您展示的解决方案(包括PDO)。如果您创建一个类并在创建此实例的新对象时初始化连接,那么以后查询sql将非常容易
<?php
class Users {
private $_conn;
public function __construct() {
//initialize the connection
$this->_conn = new PDO('mysql:host=localhost;dbname=DBNAME;charset=utf8', USERNAME, PASSWORD);
}
public function __destruct() {
//close the connection when the database connection is not needed anymore
$this->_conn = null;
}
public function do_something() {
$this->_conn->query("SELECT name FROM users LIMIT 1");
}
}
$users = new Users(); //initialize the new object Users
$users->do_something();
对于将来关注此问题的人:
在PHP中,您不能像上面看到的那样访问函数之外的变量
去了解更多
对于这个问题有很多解决方案,但我更喜欢在这里向您展示的解决方案(包括PDO)。如果您创建一个类并在创建此实例的新对象时初始化连接,那么以后查询sql将非常容易
<?php
class Users {
private $_conn;
public function __construct() {
//initialize the connection
$this->_conn = new PDO('mysql:host=localhost;dbname=DBNAME;charset=utf8', USERNAME, PASSWORD);
}
public function __destruct() {
//close the connection when the database connection is not needed anymore
$this->_conn = null;
}
public function do_something() {
$this->_conn->query("SELECT name FROM users LIMIT 1");
}
}
$users = new Users(); //initialize the new object Users
$users->do_something();
我曾经听说过一些关于全局变量的事情,这就是你的意思吗?看起来你需要将$db_conn
作为参数传递给db_query
函数,而不是将其用作全局变量。它不在函数的范围内。@user3389375你可能想了解一下:…全局变量几乎总是一个b广告创意。请不要在问题中编辑解决方案。如果您有与其他人提供的答案不同的内容,请添加您自己的答案。我曾经听说过一些全局变量,这就是您的意思吗?看起来您需要将$db_conn
作为参数传递给db_query
函数,而不是使用它作为全局变量。它不在函数的作用域内。@user3389375您可能想了解一下:…全局变量几乎总是一个坏主意。请不要在问题中编辑解决方案。如果您有与其他人提供的答案不同的内容,请添加您自己的答案。但是如果我想调用函数,我只需要nt说db_查询(“选择…”);@user3389375,为什么?为什么不把连接传给它?我想说db_查询(“选择…”)比总是写db_查询要容易得多($db_conn,“选择…”);因为我有大量其他函数组成db_查询function@user3389375然后您需要考虑将这些绑定到一个类中,该类在构建时只需要一次连接:$db=newdatabase($conn);$db->query('SELECT…')
@user3389375这是建议的方法,你不应该使用global,传递参数是正确的方法。但是如果我想调用函数,我只想说db_query(“选择…”);@user3389375,为什么?为什么不把连接传递给它?我想说db_query(“选择…”)会容易得多;而不是总是编写db_查询($db_conn,“SELECT…”);因为我有大量其他函数组成db_查询function@user3389375然后您需要考虑将这些绑定到一个类中,该类在构建时只需要一次连接:$db=newdatabase($conn);$db->query('SELECT…')
@user3389375这是建议的方法,您不应该使用global,传递参数是正确的方法。