【问题标题】:mysql functions in PHP functionsPHP函数中的mysql函数
【发布时间】:2011-03-25 22:30:40
【问题描述】:

例如:

<? 
function getTitle(){
    $query="SELECT title FROM news WHERE author = 'admin' LIMIT 5";
    $result = mysql_query($query, $mysql_connection);
    $data = mysql_fetch_array($result,MYSQL_ASSOC);
    return $data['title'];
}
?>

而且每次我想提交一个 MySql 查询时,我必须始终在函数中包含 config.php,否则它不起作用。 我尝试在文件开头包含但仍然没有结果。

Config.php 文件包括与数据库的连接和数据库的选择。那里没有错误。

似乎是什么问题?

【问题讨论】:

  • 定义“不起作用”。它会引发错误还是什么?

标签: php mysql function include


【解决方案1】:

$mysql_connection 在函数范围内是未知的。

如果您在脚本中只使用一个连接,您可以理论上也可以省略连接说明符:

$result = mysql_query($query);

这样,您的 mySQL 调用无需任何额外步骤即可工作。

如果您想保留标识符(如果您有多个打开的连接,您应该这样做),作为快速修复,您可以使用

function getTitle() 
 {
   global $mysql_connection;
   .....

 }

将连接导入函数的作用域。

一种高级(并且更简洁)的方法是拥有一个包含数据库连接的单例或静态对象。请参阅此问题以获取很好的示例:

【讨论】:

  • 嗨 Pekka.. 请在此处查看此主题,您可能会喜欢:stackoverflow.com/questions/3415710/…
  • @Fosco 我在那里加了我的 2 美分。还可以在这里查看我对这个问题的更新(我花了一段时间才找到我想链接到的问题。)
  • 有很多正确的答案,但这是第一个,所以我宣布这是正确的答案。我只使用一个连接,所以你的第一个建议奏效了。
【解决方案2】:

那是因为你引用了$mysql_connection,它在你的 config.php 中声明,现在超出了范围。只要您只使用一个连接,就可以完全省略该参数。只需拨打mysql_query($query);

【讨论】:

    【解决方案3】:

    将以下内容放入您的函数中。

    global $mysql_connection;
    

    发生的情况是您的 $mysql_connection 变量不在函数的范围内。

    我以前也遇到过同样的问题。

    【讨论】:

      【解决方案4】:

      这是因为 $mysql_connection 变量在函数体中不可见。使用

      全局 $mysql_connection

      在函数的开头

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-09
        • 2023-03-16
        • 1970-01-01
        • 2012-11-11
        • 1970-01-01
        相关资源
        最近更新 更多