我試圖建立一個mysqli_connect聲明$ dbc的數據庫連接一個數據庫連接。我曾在我的腳本工作有以下:設置使用變量從另一個文件
DEFINE ('DB_USER','myName';
DEFINE ('DB_PASSWORD','somePass123';
DEFINE ('DB_HOST','localhost';
DEFINE ('DB_NAME','sitename';
// make the db connection
$dbc = @mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME)
OR die ('Could not connect to mysql: ' . mysqli_connect_error());
然後我張貼的問題上SO有關安全性和最佳實踐,並告知,如果連接變量(密碼,主機,則dbname,用戶)在其他地方存在一個單獨的數據庫配置文件,我應該從那裏調用連接的變量。
下面是在配置/數據庫/ PHP的文件中的相關片段
$config['default'] = array(
'benchmark' => TRUE,
'persistent' => FALSE,
'connection' => array(
'type' => 'mysqli',
'user' => 'myName',
'pass' => 'somepass123',
'host' => 'localhost',
'port' => FALSE,
'socket' => FALSE,
'database' => 'sitename',
),
'character_set' => 'utf8',
'table_prefix' => '',
'object' => TRUE,
'cache' => FALSE,
'escape' => TRUE
);
所以我再嘗試這樣做:
DEFINE ('DB_USER','$config['default']['connection']['user'])';
DEFINE ('DB_PASSWORD',$config['default']['connection']['pass']);
DEFINE ('DB_HOST',$config['default']['connection']['host']);
DEFINE ('DB_NAME',$config['default']['connection']['database']);
// make the db connection
$dbc = @mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME)
OR die ('Could not connect to mysql: ' . mysqli_connect_error());
,當我試圖加載網頁,其中產生以下錯誤: 「未定義的變量:配置」
然後我嘗試這樣做:
$dbc = @mysqli_connect(
$config['default']['connection']['host'],
$config['default']['connection']['user'],
$config['default']['connection']['pass'],
$config['default']['connection']['database'])
OR die ('Could not connect to mysql: ' . mysqli_connect_error());
// Set the encoding
mysqli_set_charset($dbc, 'utf8');
// set the query variable
$query = "SELECT MAX(rating_date)
AS last_date
FROM rating
WHERE incident_id = $incident_id;";
//connect and run the query
$result = mysqli_query($dbc, $query);
echo $result->fetch_object()->last_date;
?>
,然後將產生以下錯誤: 「致命錯誤:調用一個成員函數fetch_object()非物體上......」
我不是100%肯定這是什麼告訴我。昨天我才知道,一個人不能迴響在PHP直接在SQL查詢,因爲它是如此我切ñ粘貼的部分對象「回聲$ result-> fetch_object() - > LAST_DATE;」哪些工作。
看來,現在我想從配置於變量得出,而不是僅僅在函數定義它們,我無法連接可能是由於一個範圍的問題嗎?
與$ DBC連接的文件是在一個文件夾主題/ MYNAME /視圖/報告/ detail.php
與數據庫配置細節陣列的文件是在應用程序/配置/ database.php中
它看起來像一個變量範圍的問題?
什麼會在這裏是最好的做法,使我的$ DBC變量?當它位於與我調用它的文件不同的目錄中時,如何從database.php調用變量?我必須包含()整個文件嗎?
是否包含配置文件中的變量? – Mathlight
爲什麼要定義基於變量的常量?這就像在一輛馬拉的馬車中裝載馬匹一樣......如果要使用變量來存儲配置數據,那麼就直接使用這些變量。 –
@Mathlight no。我應該(我很抱歉,如果這聽起來很愚蠢,你可以猜測我的PHP使用經驗) –