我可以在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中不是
答案 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.