我不确定这是否可行,也不完全确定如何搜索。我有几个动态网页,它们都链接到同一个MySQL数据库表,但得到的结果不同。例如,ID为5的动态网页将运行以下查询:
SELECT * FROM myTable WHERE category1 = 1
ID=7的网页将运行:
SELECT * FROM myTable WHERE category2 = 1
等等。所有的查询都从同一个表中获取数据,但WHERE子句对每个查询都不同——它不查看同一列。ID为7的页面应该只返回category2=1的结果,而忽略ID为5的页面将返回的结果。我的网站有大约20个不同的页面/查询,这就是为什么我想看看是否可以在函数中完成。
有没有一种方法可以将其放入函数中,如果有,我将如何正确设置参数?或者这是一个我必须在每页上单独写出所有查询的例子?
function find_results(what to put here?) {
global $connection;
$query = "SELECT * FROM myTable WHERE (how to code this part?)";
$result = mysqli_query($connection, $query);
confirm_query ($result);
return $result;
}
您可以将必要的参数添加到函数参数列表中,然后在运行时提供值。
function find_results($column, $value)
{
global $connection;
$query = "SELECT * FROM myTable WHERE {$column} = $value";
$result = mysqli_query($connection, $query);
confirm_query ($result);
return $result;
}
//Usage:
$result = find_results("category2", 1)
如果返回记录的值最终是字符串,请确保用单引号括起$value
。
如果pageId和categoryId之间存在常量关系,则可以创建一个数组来保存按pageId索引的数组,如:
$pageIdToCategoryMapping = [
1 => 'cateogory1',
2 => 'category5',
...
]
然后用它把数据传递给你的功能,比如
find_results($pageIdToCategoryMapping[$pageId])
function find_results($category) {
(...)
$query = "SELECT * FROM myTable WHERE ({$category} = 1)";
(...)
}
我一直在为mysql操作使用类和对象方法。github 中可用的源代码
我建议您将数组作为参数传递,并可以按所需格式将查询或结果作为数组返回。此功能适用于任何数字或条件
<?php
$arg['db']="database";
$arg['tabe']="table";
$arg['search']['id1']="id1";
$arg['search']['id2']="id2";
//
function searchAndReturnResultAsArray($arg)
{
$return = NULL;
$query="SELECT * FROM ".$arg['table'];
$flag=false;
foreach($arg['search'] as $key=>$value)
{
if($flag)
$query.=" AND ";
else
$flag=true;
$query.= $key." = '".$value."' ";
}
$row = mysqli_num_rows($query);
$field = mysqli_fetch_object($query);
if($row >= 1)
{
while($data = mysqli_fetch_array())
{
$return[] = $data;
}
}
return $return;
}
?>
或者,您也可以在查询准备好后返回查询。