好吧,因为标题说我有很多桌子,我需要在不同的下拉框中显示它们。到目前为止,我已经将第一张桌子显示在一个下拉框内,但我不确定下一张桌子的显示方式。
<?php
$link = mysql_connect('server', 'user', 'password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
$selected = mysql_select_db("database",$link)
or die("Could not select examples");
$sql="SELECT * FROM MOBO CPU, RAM,GPU, PSU, COMPUTERCASE";
$result = mysql_query($sql);
echo "<select name='mobo'>";
while ($row = mysql_fetch_array($result)) {
echo '<option value="'.$row["id"].'">'.$row["mobo"].'</option>';
}
echo "</select>";
?>
所以这是我的php到目前为止,这就是数据库的外观。
CREATE TABLE MOBO (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,mobo VARCHAR(50) UNIQUE,quantity INT,price DECIMAL(18,2));
CREATE TABLE CPU (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, cpu VARCHAR(50) UNIQUE, quantity INT, price DECIMAL(18,2));
CREATE TABLE RAM (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,ram VARCHAR(50) UNIQUE,quantity INT,price DECIMAL(18,2));
等我也希望有人能够解决我的问题以详细解释它是如何完成我的PHP Newb。
答案 0 :(得分:0)
首先,您正在使用mysql_*
函数,并在最新版本的PHP中删除它们。虽然现在可以使用,但是将来升级到更高版本的PHP会有问题。使用Mysqli或PDO(PDO是我的偏好)
其次,在诸如表名之类的标识符中使用小写。此代码可能适用于Windows,但如果您迁移到Linux,则所有这些都将区分大小写,并且此代码将无法正常工作。
我在这段代码中不明白,while ($row = mysql_fetch_array($result)) {
。 mysql_fetch_array()返回数据库的完整结果集。 while循环将不断重新定义它的值,您应该使用foreach($var = mysql_fetch_array(...) as $key => $value){}
,然后在我的示例中单独定义$var
然后在foreach循环中使用它之前会更好。
然后我认为你的问题已得到解决。
$sql="SELECT * FROM mobo, cpu, ram, gpu, psu, case";
if($result = mysql_query($sql) != false){ // you should actually check if the query ran successfully.
$data = mysql_fetch_array($result);
//echo "<select name='mobo'>";
foreach($data as $row => $value){
echo $row, $value, "</br>";
}
//echo "</select>";
}
最后,从多个表中选择所有内容都是错误的数据库设置。一旦在数据库中有大量结果,它会将您拖下来,然后解决此问题将是一个问题。或许最好通过id使用内部或外部连接。