PHP分离如果其他语句
问题描述:
<?php
extract($_GET);
$sql = "SELECT * FROM tablename order by Name DESC";
$sql = "SELECT * FROM tablename where age = "31";
$db = mysql_connect("localhost","root","password");
if (!$db) {
die("");
}
$db_select = mysql_select_db('databasename',$db);
if (!$db_select) {
die("");
}
if (!($result = mysql_query($sql, $db))) {
print("Could not execute query! <br />");
die(mysql_error() . "</body></html>");
} // end if
echo "<table>
<tr>
<th>Name</th>
<th>Age</th>
</tr>";
while($row = mysql_fetch_array($result)){
echo "<tr>";
echo "<td>".$row['Name']."</td>";
echo "<td>".$row['Age']."</td>";
}
echo "</table>";
mysql_close($db);
?>
在选择名称或年龄时,我应该在哪里添加运行sql语句的name和age的if else语句?姓名和年龄是从不同的列,但在同一个表PHP分离如果其他语句
答
if(isset($_GET['age'])) {
$sql = 'SELECT * FROM tablename where age = ' . $_GET['age'];
} else if(isset($_GET['name'])) {
$sql = 'SELECT * FROM tablename order by Name DESC';
}
然后,你可以使用它的URL,如:
- www.example.com?age=31
- www.example。 com?name
请注意,这是一个非常简单的例子,您还需要验证输入。
编辑:你不应该使用mysql *(不建议使用)的功能,而应该使用mysqli *或PDO。有关mysql *函数的更多信息,请阅读this question上发布的答案。
+1
在PHP 7中,'mysql_'函数实际上被**删除**,并且在去年12月发布。 – Arjan
答
看起来您需要检查$ _GET的密钥。
试试这个:
if (isset($_GET['Name']) && !empty($_GET['Name'])) {
$sql = "SELECT * FROM tablename order by Name DESC";
} else if (isset($_GET['Age']) && !empty($_GET['Age'])) {
$sql = "SELECT * FROM tablename where age = '".$_GET['Age']."'";
}
希望这有助于。上述
答
<?php
error_reporting(-1);
$db = mysqli_connect("localhost","root","password","databasename");
if (!$db) {
die(mysql_error() . "</body></html>");
}
if(isset($_GET['age'])) {
// You can use the $_GET['age'] variable in the query if you want to, this makes you vulnerable to sql injection though. if you don't use prepared statements or escape it (read link below
$sql = 'SELECT * FROM tablename where age = "31"';
} else if(isset($_GET['name'])) {
// Same as for age but $_GET['name'] in this case of course.
$sql = 'SELECT * FROM tablename order by Name DESC';
}
$result = mysqli_query($sql, $db)
if (!result) {
print("Could not execute query! <br />");
die(mysql_error() . "</body></html>");
} // end if
echo "<table>
<tr>
<th>Name</th>
<th>Age</th>
</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>".$row['Name']."</td>";
echo "<td>".$row['Age']."</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($db);
?>
的查询是保存,只要你不使用在查询本身的$ _GET变量,如果这是你想你应该准备的语句读了一下:http://php.net/manual/en/mysqli.prepare.php
你的意思我们需要运行这些$ sql中的任何一个?请妥善澄清你的问题。 –
要在选择名称或年龄时运行sql语句 – Synetrix
好的,以及可能的查询字符串键是什么?正如$ _GET ['name']和$ _GET ['age']? –