<?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>
掩盖错误消息和我的猫告诉你,一切看起来完全正确,但我不知道是不是好的做法。我该怎么办? 谢谢。
的常用方法,以防止这种情况正在检查http://php.net/isset每个变量,但为什么你想,你没有在第一时间选择输出列?我不明白这是如何有意义的。 –
因为我想在sql语句中要显示的列的名称可以由用户动态选择,但我没有在这段代码中显示。 – natttan
您是否可以使用与限制查询相同的系统来限制列的*显示? –