我正在尝试使用PHP函数从数据库中检索多个数据,但不知何故,当我多次这样做时,它会产生MysqL连接错误.
$heat=getStat("heat",$userid);
$cash=getStat("cash",$userid);
echo MysqL_error();
我使用上面的代码通过调用从数据库中检索统计信息的函数来分配变量.
当我单独使用上述代码时,它们可以工作.但是当我把它们放在一起时它们会失败.
这是一个简单的你是一个初学者 – 菜鸟编程错误吗?
我忘了发布这个功能,所以这里是:
function getStat($statName,$userID) {
require_once 'config.PHP';
$conn = MysqL_connect($dbhost,$dbuser,$dbpass)
or die('Error connecting to MysqL' . MysqL_error());
MysqL_select_db($dbname);
$query = sprintf("SELECT value FROM user_stats WHERE stat_id = (SELECT id FROM stats WHERE display_name = '%s' OR short_name = '%s') AND user_id = '%s'",MysqL_real_escape_string($statName),MysqL_real_escape_string($userID));
$result = MysqL_query($query);
list($value) = MysqL_fetch_row($result);
return $value;
}
最佳答案
问题很可能是由require_once引起的.因为这是您为数据库连接提供配置的地方.第二次执行require时,它不会引入定义数据库连接变量所需的代码.
正如@MichaelBerkowski所说,在脚本加载时有一个全局连接会好得多,并且对每个数据库请求都使用这个连接.但是,如果您希望坚持当前的方式,这应该可以解决问题:
function getStat($statName,$userID) {
require 'config.PHP'; /// <-- note this has changed to just require
$conn = MysqL_connect($dbhost,$dbpass)
or die ('Error connecting to MysqL');
MysqL_select_db($dbname);
$query = sprintf("SELECT value FROM user_stats WHERE stat_id = (SELECT id FROM stats WHERE display_name = '%s' OR short_name = '%s') AND user_id = '%s'",MysqL_real_escape_string($userID));
$result = MysqL_query($query);
list($value) = MysqL_fetch_row($result);
return $value;
}