2013-06-30 52 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