我不确定这是否可行,我不完全确定如何搜索。我有几个动态网页都链接到相同的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;
}
答案 0 :(得分:2)
您可以将必要的参数添加到函数参数列表中,然后在运行时提供值。
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
。
答案 1 :(得分:0)
如果它是pageId和categoryId之间的常量关系,你可以创建一个数组来保存它由pageId索引,如:
$pageIdToCategoryMapping = [
1 => 'cateogory1',
2 => 'category5',
...
]
然后只需使用它将数据传递给您的函数,如
find_results($pageIdToCategoryMapping[$pageId])
function find_results($category) {
(...)
$query = "SELECT * FROM myTable WHERE ({$category} = 1)";
(...)
}
答案 2 :(得分:0)
我一直在使用类和对象方法进行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;
}
?>
或者,您也可以在准备好后返回查询。