2013-06-30 55 views
0
<?php 

include('../Adress/includes/mysql_connection_recepti.php'); 

if (isset($_POST['username'])){ 

$conn = dbConnect($_POST['username']); 


$city=$_POST['city']; 

$sql= 'SELECT * FROM adress_table WHERE city="'.$city.'"'; 

$result=mysql_query($sql); 

$numRows=mysql_num_rows($result); 

?> 

<p><?php echo $numRows; ?> records is found.</p> 

<table> 
<tr> 
<th>Number</th> 
<th>Name</th> 
<th>Last Name</th> 
<th>City</th> 
<th>Country</th> 
<th>Date</th> 
</tr> 

<?php 
$n=0; 

while($row = mysql_fetch_assoc($result)){ 
//print_r($row); 

$n++; 

?> 

<tr> 
<td><?php echo $n . ".";?></td> 
<td><?php echo $row['name'] ?></td> 
<td><?php echo $row['last_name'] ?></td> 
<td><?php echo $row['city'];?></td> 
<td><?php echo $row['country'] ?></td> 
<td><?php echo $row['date'] ?></td> 
</tr> 

<?php }?> 

</table> 

<?php }?> 
</body> 
<body> 

<form action="" method="post"> 
<input type="text" id="username" name="username"/> 


<select name="city"> 
<option value="new_york">New York</option> 
<option value="london">London</option> 
<option value="belgrade">Belgrade</option> 
<option value="zagreb">Zagreb</option> 
<option value="moscow">Moscow</option> 

<input type="submit" value="Find"> 
</select> 
</body> 

正如你所看到的,我的sql語句告訴當city =「'。$ city。'」時,每一列都必須顯示,這就完全沒問題。但是,當我試圖顯示一些特定列(S),不是所有(*),例如顯示mysql結果的問題

$sql= 'SELECT name,last_name FROM adress_table WHERE city="'.$city.'"'; 

然後錯誤出現,bacause

<td><?php echo $row['city'];?></td> 
<td><?php echo $row['country'] ?></td> 
<td><?php echo $row['date'] ?></td> 

沒有定義。爲了解決這個問題,我把@符號

<td><?php @ echo $row['city'];?></td> 
<td><?php @ echo $row['country'] ?></td> 
<td><?php @ echo $row['date'] ?></td> 

掩蓋錯誤消息和我的貓告訴你,一切看起來完全正確,但我不知道是不是好的做法。我該怎麼辦? 謝謝。

+2

的常用方法,以防止這種情況正在檢查http://php.net/isset每個變量,但爲什麼你想,你沒有在第一時間選擇輸出列?我不明白這是如何有意義的。 –

+0

因爲我想在sql語句中要顯示的列的名稱可以由用戶動態選擇,但我沒有在這段代碼中顯示。 – natttan

+0

您是否可以使用與限制查詢相同的系統來限制列的*顯示? –

回答

2

你可以只使用一個,如果要檢查是否有東西在裏面與否:

<?php echo isset($row["city"]) ? $row["city"] : "" ?> 
+0

不能相信我們加了同樣的答案:) – Nitesh

+1

是的。嗯,我認爲他有這個想法^ _^ –

+0

謝謝,我覺得我首先做到了這一點,對我來說這似乎很明顯,但出現了一些問題。我會再試一次,謝謝! – natttan

1

您試圖顯示的列中不存在SQL查詢。你可以使用類似 -

<?php echo isset($row["city"]) ? $row["city"] : "" ?> 
+1

是的,是的,它的工作原理。謝謝你們。 – natttan

+0

@natttan很高興它的作品! – Nitesh