我可以在文件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中不起作用。
发布于 2017-06-10 17:16:17
$dbname和$table_name变量不在next_auto_increment函数块的范围内。
您可以将它们作为参数传递:
function next_auto_increment($dbname, $table_name){
...
} 或者您可以使用全局方法将它们拉到范围中:
function next_auto_increment(){
global $dbname;
global $table_name;
...
}我还需要声明的义务,“您应该使用的是PDO而不是mysql_connect"!
发布于 2017-06-10 17:35:04
首先,所有的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.
https://stackoverflow.com/questions/44475921
复制相似问题