嗨,我是php mysql的新手。我创建了一个用户可以搜索数据库的表单,结果取决于用户填写表单的方式。表单有6个搜索字段。用户可以选择/填写一个或多个字段中的任何一个来进行搜索。我把它编码如下 PHP
-applicationDidEnterBackground()
{
[self scheduleLocalNotificationAtTimeIntervalFromNow:1.0f identifier: @"someIdentifier"];
}
-applicationWillTerminate
{
[self cancelLocalNotificationWithIdentifier: @"someIdentifier"];
[self scheduleLocalNotificationAtTimeIntervalFromNow:0.0f identifier: @"irrelevantIdentifier"];
}
现在当用户工作但它显示数据库表中的所有行。 例如,用户填写三个床位,城市,地点,其余三个是空白。 搜索结果页面显示数据库中包含所有记录的所有行。 请帮我纠正我的代码。提前致谢
答案 0 :(得分:1)
首先,我同意@VaaChar,你应该使用mysqli或者更好的PDO。
您将确定IF是否已在某个字段中放置了值,如果是,则在查询中使用它。如果字段中没有放置任何值,请在查询中忽略它。
像这样......
$sqlid = "";
$sqloffered = "";
$sqltype = "";
$sqlbeds = "";
$sqlcity = "";
$sqllocality = "";
if(isset($propertyid)) {
$sqlid = " propertyid LIKE '%$propertyid%'";
}
if(isset($propertyid) && isset($offered)) {
$sqloffered = " OR offered LIKE '%$offered%'";
}
if(!isset($propertyid) && isset($offered)) {
$sqloffered = " offered LIKE '%$offered%'";
}
if(isset($property_type)) {
$sqltype = " AND property_type LIKE '%$property_type%'";
}
if(isset($beds)) {
$sqlbeds = " AND beds LIKE '%$beds%'";
}
if(isset($city)) {
$sqlcity = " AND city LIKE '%$city%'";
}
if(isset($locality)) {
$sqllocality = " AND locality LIKE '%$locality%'";
}
$sql = "SELECT * FROM osrc_data WHERE {$sqlid}{$sqloffered}{$sqltype}{$sqlbeds}{$sqlcity}{$sqllocality} ";
答案 1 :(得分:0)
使用(例如)$ propertyid为空构建sql查询时,可以得到:
....喜欢'%%'......,
就像在说“什么”。您必须仅使用已填充的字段构建查询。