【发布时间】:2015-07-19 04:49:10
【问题描述】:
这是我的代码:
<?php
$db_host = 'localhost';
$db_user = 'root';
$db_pass = 'root';
$db_database = 'drmahima_com';
$link = mysqli_connect($db_host,$db_user,$db_pass,$db_database) or die('Unable to establish a DB connection');
mysqli_query($link, "SET names UTF8");
function temp() {
$patient = mysqli_fetch_assoc(mysqli_query($link, "SELECT name,dob FROM patients WHERE id='69'"));
echo $patient['name'];
}
temp();
?>
当我运行它时,查询似乎没有执行,并且页面上没有显示任何内容。但是,如果我删除该函数并将代码更改为:
<?php
$db_host = 'localhost';
$db_user = 'root';
$db_pass = 'root';
$db_database = 'drmahima_com';
$link = mysqli_connect($db_host,$db_user,$db_pass,$db_database) or die('Unable to establish a DB connection');
mysqli_query($link, "SET names UTF8");
// function temp() {
$patient = mysqli_fetch_assoc(mysqli_query($link, "SELECT name,dob FROM patients WHERE id='69'"));
echo $patient['name'];
// }
// temp();
?>
有效,并显示患者姓名。
这是怎么回事?
【问题讨论】:
-
这是一个范围问题。
$link超出范围,您需要在参数中传递连接。temp($link) -
因为范围。 php.net/manual/en/language.variables.scope.php 。如果你还想在函数中使用外部变量,你可以在函数内部声明
global $link;,你会很好。 -
谢谢!不敢相信我这么笨