对于php来说很新,并且在从外部配置文件加载值方面存在问题。我将它用于我的数据库连接,有时它会返回值,但有时它会返回null。我一直在与此战斗数小时,似乎无法找到任何信息。外部文件的格式是这样外部配置文件始终没有加载数据
[database]
db_name = "atmc_timesheet"
db_user = "username"
db_pass = "password"
我访问它像这样
function connect_db()
{
$ini = parse_ini_file("../../../atmc_timesheet_config.ini", TRUE);
$dbhost = 'localhost';
$db_name = $ini['database']['db_name'];
$user_name = $ini['database']['db_user'];
$pass = $ini['database']['db_pass'];
$dsn = "mysql:dbname=$db_name;host=$dbhost";
try {
$pdo = new PDO($dsn, $user_name, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
}
catch (Exception $e) {
echo "Error : ".$e->getMessage();
}
}
它适合我的登录脚本,但接下来的查询我跑空返回的数据。这两个函数都在同一个php文件中,所以它不是一个错误的路径错误。有什么想法吗?
工作脚本是
function get_login($username)
{
$pdo = connect_db();
$stmt = $pdo->prepare('SELECT * from tblemployees where username = :username');
$stmt->execute(['username' => $username]);
$user = $stmt->fetch();
$stmt = null;
$pdo = null;
return $user;
}
非工作之一是
function get_events_for_calendar($userid)
{
//Gets all userid rows
$pdo = connect_db();
$sql = "Select * from tblevents where (employeeId = :uid) order by eventId desc;";
$stmt = $pdo->prepare($sql);
$stmt->bindvalue(':uid', $userid);
$result = $stmt->execute();
$temp_array = array();
$event_array = array();
//fetches records and puts in array
while ($record = $result->fetch()){
$temp_array[] = array('id' => $record['eventId'], 'empolyeeid' => $record['employeeId'], 'rh' => $record['rh'], 'oh' => $record['oh'],
'inventory' => $record['inventory'], 'empapproved' => $record['empapproved'], 'mgrapproved' => $record['mgrapproved'],
'acctapproved' => $record['acctapproved'],);
$var_dump($temp_array);
}
回波json_encode($ event_array); }
不工作的那个从用户名和密码的ini文件中获得空值,但是获取主变量的信息。
即使两个查询都在同一个php文件中,它仍未找到第二个查询上的文件。是否可能没有关闭ini文件,这是错误的原因。在parse_ini之后,我找不到任何有关关闭的信息。任何想法为什么它不会找到它。
嗯找到PDO的详细信息,以及什么是你的工作的登录脚本,什么是返回null“下查询”?不能真正告诉你目前提供什么。 – TimBrownlaw
看起来你正试图在每个查询之前建立一个新的PDO连接,这将成为anice问题。那是我第一次猜测是什么造成的。你应该让你的数据库连接变量singleton – kunruh
就像我说的,我是新来的PHP,但我会研究。 – Mike