我的PHP代码中有些东西不起作用。函数mysqli_query()
内的函数db_query()
无法访问先前定义的变量link
。为什么呢?
<?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');
我的问题是我总是得到这个错误:
警告:mysqli_query()期望参数1为mysqli,在...中给出为null
答案 0 :(得分:3)
$link = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($link));
$query = "SELECT name FROM mytable");
$result = mysqli_query($link, $query);
我希望这有效
答案 1 :(得分:1)
对于将来看这个问题的人:
在PHP中,您无法访问函数之外的变量,如上所示。
转到variable scope了解详情。
这个问题有很多解决方案,但我更喜欢我在这里展示的一个(包括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();
答案 2 :(得分:0)
这是一个范围问题。
必须为function db_query($db_conn,$sql) {