2015-02-11 42 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