【问题标题】:mysqli_query not working when called from inside a function [duplicate]从函数内部调用mysqli_query时不起作用[重复]
【发布时间】: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;,你会很好。
  • 谢谢!不敢相信我这么笨

标签: php mysql web mysqli


【解决方案1】:

将 $link 作为参数传递给函数。试试这个:

<?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($link) {
    $patient = mysqli_fetch_assoc(mysqli_query($link, "SELECT name,dob FROM patients WHERE id='69'"));
    echo $patient['name'];
}
temp($link);
?>

【讨论】:

    【解决方案2】:

    $link 传递给函数。由于该变量的scope,它不起作用。试试 -

    function temp($link) {
        $patient = mysqli_fetch_assoc(mysqli_query($link, "SELECT name,dob FROM patients WHERE id='69'"));
        echo $patient['name'];
    }
    temp($link);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      相关资源
      最近更新 更多