如何使用 PHP 在 html 中使用 SELECT 标记查询我的 SQL 数据库
Posted
技术标签:
【中文标题】如何使用 PHP 在 html 中使用 SELECT 标记查询我的 SQL 数据库【英文标题】:How do I use PHP to query my SQL database using SELECT tag in html 【发布时间】:2017-02-11 18:35:31 【问题描述】:基本上我想使用用户从不同的选择标签中选择的选项,并且本质上将它们存储为变量,然后我可以使用这些变量在 SQL 中查询我的数据库。
我的 html 代码在这里:
<div id ="search_elements">
<img src="UniSelect.jpeg">
<select>
<option selected disabled>Select a university</option>
<option value="ucl">UCL</option>
<option value="kings">Kings College</option>
<option value="imperial">Imperial College</option>
<option value="lse">London School of Economics</option>
</select>
<img src="PriceSelect.jpeg">
<select>
<option selected disabled>Select a weekly rent price</option>
<option value="50">0-£50</option>
<option value="100"> £100-£150</option>
<option value="150">£150-200</option>
<option value="200"> £200+</option>
</select>
</div>
我希望使用的 php 类型是:
//$con=mysqli_connect("localhost","adam","YjM3ZTYwOTQ5OWRmYWZh","adam_...");
//if (mysqli_connect_errno())
//
// echo "Failed to connect to MySQL: " . mysqli_connect_error();
//
// Perform queries
//$sql=mysqli_query($con,"SELECT CONTENT FROM Blog WHERE ID = 01");
//$result=mysqli_fetch_assoc($sql);
//echo $result['CONTENT'];
//mysqli_close($con);
为了再次明确,我想使用用户选择的不同值,在单击搜索按钮时,将这些查询结果显示在表格中。
【问题讨论】:
嗯...您想要大学的价值和租金价格? 是的,我想存储和使用每个选择元素中的一个值。所以一个大学和一个租金价格<form>
中有这些选择吗?
为每个选择标签添加名称属性
除了 Edvin 关于在用于 SQL 之前正确转义数据的 cmets 之外,您可能希望看看 PDO - 它与 mysqli 一样易于使用 - 但提供了连接到大量不同的数据库引擎。在一个实例中,我在 MySQL、SQLite 和 SQLServer 下运行完全相同的代码——这 3 种安装中唯一不同的是连接字符串——一行代码。
【参考方案1】:
此解决方案与您的解决方案略有不同,因为您没有提供表单、提交按钮等,但总的来说,经过一些更改,它也应该可以工作:
<form method="post" action="">
<img src="UniSelect.jpeg">
<select name="university">
<option selected disabled>Select a university</option>
<option value="ucl">UCL</option>
<option value="kings">Kings College</option>
<option value="imperial">Imperial College</option>
<option value="lse">London School of Economics</option>
</select>
<img src="PriceSelect.jpeg">
<select name="rent_price">
<option selected disabled>Select a weekly rent price</option>
<option value="50">0-£50</option>
<option value="100"> £100-£150</option>
<option value="150">£150-200</option>
<option value="200"> £200+</option>
</select>
<input type="submit" value="Submit form">
</form>
现在,要获取这些值(类似这样,我建议将其放在表单上方):
if (!empty($_POST))
// Checking connection in here
$university_id = mysqli_real_escape_string($con, $_POST['university']);
$rent_price = mysqli_real_escape_string($con, $_POST['rent_price']);
$sql = mysqli_query($con, "SELECT * FROM university WHERE name = '".$university_id."'");
$result = mysqli_fetch_assoc($sql);
// Same thing goes for rent price
【讨论】:
我不能使用遵循标准查询语法的格式,所以“SELECT university FROM TABLENAME WHERE....”等 对不起,我不太明白你的评论。你能解释更多吗? 你是这个意思吗?:SELECT university FROM tableName WHERE university = $_POST["university"]
(等等)?但不要忘记转义变量。
是的!类似的东西,但它在实践中如何使用正确的语法?
这实际上是一个正确的语法。只是为了在此查询之前转义写:$_POST["university"] = $con->real_escape_string($_POST["university"]);
(实际上,最好分配给一个新变量,而不是覆盖,但现在让我们保持原样以避免混淆。更好的解决方案是:$university = $con->real_escape_string($_POST["university"]);
然后使用$university
在我的书面查询中)。以上是关于如何使用 PHP 在 html 中使用 SELECT 标记查询我的 SQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章