【发布时间】:2015-02-18 03:19:29
【问题描述】:
我想让用户通过从下拉列表中选择字段名称来搜索表,然后在该字段中输入要搜索的术语。我遇到的问题是有些字段是字符串,有些是数字。当我从 $_GET 变量构造 WHERE 子句时,我不知道如何分隔搜索词,因为我想不出一个好的方法来确定用户选择的字段是数字还是字符串。
这是搜索表单:
<form action="<?php $_SERVER['PHP_SELF'] ?>">
<label for="search_field">Search:</label>
<select name="search_field">
<?php
$fields = $res->fetch_fields();
foreach($fields AS $f) {
echo '<option value="' . $f->name . '">' . $f->name . '</option>\n';
}
?>
</select>
<label for="search_for">For:</label>
<input type="text" name="search_for" />
<input type="submit" value="Search" />
</form>
php 文件这样处理搜索变量:
if(isset($_GET['search_field']) and isset($_GET['search_for'])) {
$sql_where = "AND " . $_GET['search_field'] . ' = ' . $_GET['search_for'] . ' ';
}
$sql = $sql . $sql_where;
查询适用于数字字段,但不适用于字符串字段。我可以在 search_for 术语周围加上引号,但是数字字段将不起作用。必须有办法做到这一点。有任何想法吗?谢谢。
【问题讨论】:
-
你能从 search_field 参数中知道 search_for 将具有哪种类型的值吗?如果是这样,则您可以根据该 search_field 值获得 if 条件。希望对您有所帮助