Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql क्वेरी के माध्यम से पुनरावृत्त फ़ोरैच लूप से डुप्लिकेट परिणामों को अनदेखा करें

यदि आप वर्तमान डिज़ाइन को एक ही सेल में संग्रहीत दृश्य के साथ रखना चाहते हैं, तो कुछ ऐसा है जो आप कर सकते हैं। हालांकि मैं इसका सुझाव नहीं देता, मैं नीचे एक उदाहरण देता हूं क्योंकि आपने पहले से ही अपनी परियोजना को इस तरह डिजाइन किया है।

सूचना: बुनियादी कार्यक्षमता को देखने के लिए यह एक परीक्षण उदाहरण है। यह अंतिम कोड नहीं है क्योंकि sql इंजेक्शन और अन्य बातों पर ध्यान नहीं दिया जाता है।

मैं यह धारणा करता हूं कि दृश्य एक एकल कक्ष में संग्रहीत होते हैं, स्थान सीमित होता है, और यदि एक दृश्य में एक से अधिक शब्द होते हैं - उदाहरण के लिए सिटी-सेंटर।

इस उदाहरण का अध्ययन करें और देखें कि क्या आप इसे अपनी आवश्यकताओं के अनुसार समायोजित कर सकते हैं:

<?PHP
echo '<pre>';

//mysql connect
mysql_connect('localhost', 'root',''); 
mysql_select_db("test"); 
//add some tsting data
addTestingData();

//build sql from user input via $_GET   
$sqlConditions = builtSql();//build sql conditions
$sql = 'select * from `building` where '.$sqlConditions;//build final sql

//get data from mysql
$result  = mysql_query($sql )  ; 
while($row=   mysql_fetch_row($result) ) 
    print_r( $row );

///////////////end//////////////////////////////////////////// 

function addTestingData()
{

mysql_query("DROP TABLE IF EXISTS `Building`");
     mysql_query("
CREATE TABLE `Building` (
  `building_uniqueid` MEDIUMINT UNSIGNED NOT NULL  , 
  `building_street` VARCHAR(30) NOT NULL,
  `building_street_nr` VARCHAR(7) NOT NULL,  
  `building_neighborhood` VARCHAR(30) NOT NULL,  
  `building_view` VARCHAR(250) NOT NULL, 
  `building_condition` VARCHAR(150) NOT NULL,  
  `building_frontage` VARCHAR(30) NOT NULL,
  `building_listprice` float NOT NULL, 
  `building_year` smallint not null,  
  `bsnss_comments` VARCHAR(255), 
  PRIMARY KEY  (`building_uniqueid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
"); 

     mysql_query('
insert into `building` (`building_uniqueid`,`building_street`,`building_street_nr`,
`building_neighborhood`,`building_view`,`building_condition`,`building_frontage`,
`building_listprice`,`building_year`,`bsnss_comments`) values 
("1","street1","strnr1","neighb1","Mountain Ocean Lake Park City-Center",
"good","frontage1","500.3","1990","good building")
'); 

     mysql_query('
insert into `building` (`building_uniqueid`,`building_street`,`building_street_nr`,
`building_neighborhood`,`building_view`,`building_condition`,`building_frontage`,
`building_listprice`,`building_year`,`bsnss_comments`) values 
("id2","street1","strnr1","neighb2","River Ocean Lake Park City-Center",
"very good","frontage1","800.5","1991","good building")
') or die(mysql_error()); 

     mysql_query('
insert into `building` (`building_uniqueid`,`building_street`,`building_street_nr`,
`building_neighborhood`,`building_view`,`building_condition`,`building_frontage`,
`building_listprice`,`building_year`,`bsnss_comments`) values 
("3","street3","strnr3","neighb1","Ocean Park City-Center",
"fantastic","frontage77","600.7","1994","good building")
'); 

     mysql_query('
insert into `building` (`building_uniqueid`,`building_street`,`building_street_nr`,
`building_neighborhood`,`building_view`,`building_condition`,`building_frontage`,
`building_listprice`,`building_year`,`bsnss_comments`) values 
("4","street4","strnr4","neighb1","Ocean Park Mountain City-Center",
"good","frontage1","500.23","1994","good")
'); 

  $_GET['Neighborhood']=array('neighb1');
  $_GET['View']=Array('Mountain','River', 'City Center');
  $_GET['Condition']=array('good','very good');
  $_GET['Frontage']=array('frontage77','frontage1');
  $_GET['minPrice']='500';
  $_GET['maxPrice']='600';
  $_GET['minYear']='1990';
  $_GET['maxYear']='1995';



}



function builtSql()
{

  $sqlBuild = '( ';

//formate sql for Neighborhood
foreach($_GET['Neighborhood'] as $value)
    $sqlBuild .=' `building_neighborhood` = \''.$value.'\' or ';   
    $sqlBuild=removeLastOr($sqlBuild);
    $sqlBuild.=') and (';

//formate sql for View
foreach($_GET['View'] as $value) 
    $sqlBuild .=' `building_view` LIKE \'%'.str_replace(" ", "-",$value).'%\' or ';   
    $sqlBuild=removeLastOr($sqlBuild);
    $sqlBuild.=') and (';

 //formate sql for Condition
foreach($_GET['Condition'] as $value) 
    $sqlBuild .=' `building_condition` = \''.$value.'\' or ';   
    $sqlBuild=removeLastOr($sqlBuild);
    $sqlBuild.=') and (';

 //formate sql for Frontage
foreach($_GET['Frontage'] as $value) 
    $sqlBuild .=' `building_frontage` = \''.$value.'\' or ';   
    $sqlBuild=removeLastOr($sqlBuild);
    $sqlBuild.=') and (';

 //formate sql for Price
$sqlBuild.=
' `building_listprice` BETWEEN \''.$_GET['minPrice'].'\' and \''.$_GET['maxPrice'].'\'   ';
    $sqlBuild=removeLastOr($sqlBuild);
    $sqlBuild.=') and (';

//formate sql for Year
$sqlBuild.=
' `building_year` BETWEEN \''.$_GET['minYear'].'\' and \''.$_GET['maxYear'].'\' '; 
    $sqlBuild.=')  ';

return $sqlBuild;
}

function removeLastOr($str)
{
    $tmp=substr($str ,0,(strlen($str )-2));
    return $tmp=substr($str ,0,(strlen($str )-3)); 
}

?>

यद्यपि आप कुछ फ़ोरैच लूप देखते हैं, चिंता करने की कोई आवश्यकता नहीं है क्योंकि वे उपयोगकर्ता डेटा वाले छोटे एरेज़ के लिए चलते हैं, इसलिए उन्हें सुपर फास्ट चलाने पर विचार करें क्योंकि इसमें कोई MySQL क्वेरी शामिल नहीं है !!

यदि कोई समस्या बनी रहती है तो डीबी स्कीमा और कुछ बुनियादी विवरण पर विवरण देने पर विचार करें। आशा है कि यह मदद कर सकता है!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओपनजेपीए विलय/निरंतर बहुत धीमा है

  2. MySQL क्वेरी एक कॉलम में दो मान जांचें

  3. किए गए प्रश्नों की संख्या की गणना

  4. php मर्ज जसन सरणियाँ

  5. क्या कंपोजिट इंडेक्स के सबसे बाएं कॉलम में वाइल्डकार्ड का मतलब है कि इंडेक्स में शेष कॉलम इंडेक्स लुकअप (MySQL) में उपयोग नहीं किए जाते हैं?