如何从config.php获取值?

时间:2017-06-10 17:05:50

标签: php mysql

我可以在config.php文件中添加一个函数吗?

config.php:

<?php

$dbhost="localhost";  
$dbusername="user1"; 
$dbpassword="123456";
$dbname="dbname1"; 

$table_name="table1";

$db=mysql_connect($dbhost,$dbusername,$dbpassword) or die (mysql_error());
@mysql_select_db($dbname) or die (mysql_error());


function next_auto_increment(){
    $Result_auto_increment= mysql_query("SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$dbname' AND TABLE_NAME = '$table_name' ");
    $row_auto_increment=mysql_fetch_array($Result_auto_increment);
    $auto_increment = $row_auto_increment['AUTO_INCREMENT']; 
    return $auto_increment;
}

?>

然后我从其他php调用func:

require_once "config.php";
$the_next_auto_increment = next_auto_increment();

但功能不起作用!

如果我把这个函数放在同一个php文件中,它可以工作但是在config.php中不是

2 个答案:

答案 0 :(得分:0)

$ dbname和$ table_name变量不在next_auto_increment功能块的范围内。

您可以将它们作为参数传递:

function next_auto_increment($dbname, $table_name){
    ...
}    

或者您可以使用global将它们拉入范围:

function next_auto_increment(){
    global $dbname;
    global $table_name;

    ...
}

我还需要声明强制性,“你应该使用PDO而不是mysql_connect”!

答案 1 :(得分:0)

首先,不推荐使用所有mysql_ *函数。我也不会使用mysqli_ *函数。只是PDO - 它使用起来更安全,你不必担心它会在未来很多年被弃用。

但重点是,仅这一点就可能导致脚本失败并且什么都不做。如果你的php.ini没有设置为显示错误,那么如果发生这种情况可能并不明显。

尝试将所有mysql_ *函数更改为mysqli_ * - 除少数几个地方外,它们大多相同。 mysql_select_db需要...是mysqli_select_db($ db,$ dbname)。 mysqli_query也是如此。

还有,全局变量。您的next_auto_increment函数中有几个变量是全局定义的,无法从您的函数访问。类似的东西:

global $db;
global $dbname;
global $table_name;

See the following to get errors to show up for you while developing.