2015-02-11 66 views
0

我試圖創建一個下拉列表,使用PHP填充我的數據庫中的所有客戶端。這是工作,但問題是我使用的代碼需要my_sql_connect和my_sql_select_db登錄詳細信息來填充列表。PHP包含mysql查詢而不使用my_sql_connect

在需要此功能的頁面,下面的代碼片段設置在每個頁面的頂部連接到數據庫:

require_once ('includes/dbConfig.php'); 

正在工作的代碼如下(將#的代替我的登錄信息):

mysql_connect('localhost', '#', '#'); 
mysql_select_db('#'); 

$sql = "SELECT client_organisation_name FROM clients"; 
$result = mysql_query($sql); 

echo "<select name='clients'>"; 
while ($row = mysql_fetch_array($result)) { 
echo "<option value='" . $row['client_organisation_name'] ."'>" . $row['client_organisation_name'] ."</option>"; 
} 
echo "</select>"; 

什麼我有實現的困難是下拉列表中使用已經建立的連接,填充。我用下面的代碼,試圖替代這個但沒有成功:

$conn = mysql_connect('$dbhost', '$dbuser', '$dbpass') or die ('Error connecting to mysql'); 
mysql_select_db('$dbname'); 

我已經在網上搜索,但沒有找到合適的解決方案。出於顯而易見的原因,將數據庫登錄信息顯而易見是一種安全風險和麻煩,因此我希望得到一些幫助,讓我的代碼片段連接到我的數據庫。

+3

* PSA:*'mysql_ *'函數[在PHP 5.5中不推薦](http://php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated)。不建議他們編寫新的代碼,因爲這會阻止您在將來進行升級。相反,請使用[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net/manual/en/book.pdo.php)和[是一個更好的PHP開發人員](http://jason.pureconcepts.net/2012/08/better-php-developer/)。 – 2015-02-11 19:31:24

+0

變量在雙引號字符串內部展開,它們不在單引號字符串內展開。這是基本的PHP語法,與MySQL無關。 – Barmar 2015-02-11 19:38:04

回答

2

您可以使用庫MySQLi:

define(DB_HOST, "yourhost"); // Host 
define(DB_NAME, "yourdbname"); // Database 
define(DB_USER, "youruser"); // Username 
define(DB_PASS, "yourpass"); // Password 

$mysqli=new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die("Error " . mysqli_error($link)); 
mysqli_set_charset($mysqli, 'utf8'); 

$results = $mysqli->query("SELECT client_organisation_name FROM clients"); 
while(($array_results[] = $results->fetch_assoc()) || array_pop($array_results)); 

echo '<select name="clients">'."\n"; 
foreach($array_results as $client) { 
    echo '<option value="'.$client['client_organisation_name'].'">'. $client['client_organisation_name'].'</option>'."\n"; 
} 
echo '</select>'."\n"; 

確保連接數據(用戶,密碼,名稱和主機)是正確的。

+0

我的問題在於,您仍然需要編寫db_host,db_name等,當我想從我的dbConfig.php文件中調用我的連接詳細信息時,我不確定這是否可以完成如果是這樣,怎麼樣? – darylsummers 2015-02-11 20:02:17

+0

這個工作完美,做了一點改動,做得比我需要的多一點,非常感謝你! – darylsummers 2015-02-12 06:37:30

+0

你可以插入文本,直到* mysqli_set_charset($ mysqli,'utf8'); *在dbConfig.php文件中並在文件中查詢 – Scream 2015-02-13 16:10:45

1

單引號字符串不評估裏面的變量。

所以,你的代碼應該是:

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 
mysql_select_db($dbname); 

編輯:

我看到@Jason麥克裏的評論,我都同意他的觀點。 你應該使用mysqli。在你的代碼中的唯一變化是以下幾點:

$db = new mysqli($dbhost, $dbuser, $dbpassword, $dbname); 

然後你執行MySQL的查詢是這樣的:

$db->query("INSERT MYSQL CODE HERE"); 
+0

「apice」是什麼意思?那是「引用」的另一個詞嗎? – Barmar 2015-02-11 19:38:58

+0

對不起:PI不小心使用了意大利語 – user3807877 2015-02-11 19:39:56