如何使用PHP和&;从SQL db获取数据;在特定情况下的子句之间
我正在为学校做作业,在那里我有一个html表单、一个php文件和一个SQL数据库。在html表单中,我有一个下拉列表,要求输入zipcode,一个文本字段要求输入姓氏,另外两个文本字段要求输入通话长度范围(一个最小,一个最大)。代码如下:如何使用PHP和&;从SQL db获取数据;在特定情况下的子句之间,php,sql,forms,Php,Sql,Forms,我正在为学校做作业,在那里我有一个html表单、一个php文件和一个SQL数据库。在html表单中,我有一个下拉列表,要求输入zipcode,一个文本字段要求输入姓氏,另外两个文本字段要求输入通话长度范围(一个最小,一个最大)。代码如下: <form action="database.php"> <h3 class="prompt1"> Select Your Area Code </h3> <select name="areaCode">
<form action="database.php">
<h3 class="prompt1"> Select Your Area Code </h3>
<select name="areaCode">
<option value="111">111</option>
etc...
</select>
<h3 class="prompt1"> Enter Last Name </h3>
<input type="text" size="35" name="lastName">
<h3 class="prompt1"> Select Call Length Range </h3>
<input type="text" size="3" value="min" name="min">–
<input type="text" size="3" value="max" name="max">
<input type="submit">
</form>
<?php
require '../../connection.php'; /* connection to db is in another file*/
$min = $_GET['min'];
$max = $_GET['max'];
$sql = "SELECT * FROM project
WHERE (areaCode = :areaCode
AND lastName = :lastName
AND (callLength BETWEEN $min AND $max))";
$stmt = $dataconn -> prepare($sql);
$stmt -> execute(array(":areaCode"=>$_GET['areaCode'])); /* line 14 */
$results = $stmt->fetchAll();
/* print out $results in a table down here /*
?>
通过execute语句,我学到了我应该做的事情(这是一节课的摘录):
callLength“=>$\u GET['callLength']
。如有任何帮助,我们将不胜感激。您可以构建一个嵌入了正确字符串的查询并直接查询,而无需准备语句然后绑定参数,也可以在execute()中使用替换(绑定)当你混合使用这两个命令时,会更加混乱。在这个孤立的情况下,你做什么并不重要,但是如果你使用execute()此时,您可以保留查询并将其与不同的参数一起反复使用,因此在某些代码中,这是一个巨大的性能胜利。但正如错误消息所述,如果使用替换,则SQL语句中的标记或标记数必须与传递给execute()的数组中的参数数相匹配。
这两方面的例子:
$sql = "SELECT * FROM project
WHERE (areaCode = :areaCode
AND lastName = :lastName
AND (callLength BETWEEN :min AND :max))";
$stmt = $dataconn -> prepare($sql);
$stmt -> execute(array(":areaCode"=>$_GET['areaCode'], ":lastName"=>$_GET['lastName'],
":min"=>$_GET['min'], ":max"=>$_GET['max']));
$results = $stmt->fetchAll();
/* print out $results in a table down here /*
?>
否则:
<?php
require '../../connection.php'; /* connection to db is in another file*/
$min = $_GET['min'];
$max = $_GET['max'];
$areaCode = $_GET['areaCode'];
$lastName = $_GET['lastName'];
$sql = "SELECT * FROM project
WHERE (areaCode = $areaCode
AND lastName = $lastName
AND (callLength BETWEEN $min AND $max))";
$results = $dataconn -> query($sql);
/* print out $results in a table down here /*
?>
$sql = "SELECT * FROM project
WHERE (areaCode = :areaCode
AND lastName = :lastName
AND (callLength BETWEEN :min AND :max))";
$stmt = $dataconn -> prepare($sql);
$stmt -> execute(array(":areaCode"=>$_GET['areaCode'], ":lastName"=>$_GET['lastName'],
":min"=>$_GET['min'], ":max"=>$_GET['max']));
$results = $stmt->fetchAll();
/* print out $results in a table down here /*
?>
<?php
require '../../connection.php'; /* connection to db is in another file*/
$min = $_GET['min'];
$max = $_GET['max'];
$areaCode = $_GET['areaCode'];
$lastName = $_GET['lastName'];
$sql = "SELECT * FROM project
WHERE (areaCode = $areaCode
AND lastName = $lastName
AND (callLength BETWEEN $min AND $max))";
$results = $dataconn -> query($sql);
/* print out $results in a table down here /*
?>