對於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