Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP、MYSQL、GROUP_CONCAT和JOIN进行空间搜索_Php_Mysql_Search_Join_Group Concat - Fatal编程技术网

使用PHP、MYSQL、GROUP_CONCAT和JOIN进行空间搜索

使用PHP、MYSQL、GROUP_CONCAT和JOIN进行空间搜索,php,mysql,search,join,group-concat,Php,Mysql,Search,Join,Group Concat,我在代码中做了一些更改,现在它开始工作了。但有一个新问题。 在数据库中,我注册了3个公司代码:G-1001、G-1002和G-1004 如果我键入“g”、“g-”或例如“g-100”并单击搜索,它将正确返回所有结果。但如果我只输入“g-1001”甚至“01”、“001”,它不会返回任何结果 为什么在搜索注册代码的最后一个字符时它不起作用 <?php if(isset($_POST['action']) && $_POST['action'] == 'send'){

我在代码中做了一些更改,现在它开始工作了。但有一个新问题。 在数据库中,我注册了3个公司代码:G-1001、G-1002和G-1004

如果我键入“g”、“g-”或例如“g-100”并单击搜索,它将正确返回所有结果。但如果我只输入“g-1001”甚至“01”、“001”,它不会返回任何结果

为什么在搜索注册代码的最后一个字符时它不起作用

<?php  
if(isset($_POST['action']) && $_POST['action'] == 'send'){
    $codsearch = preg_replace('#[^a-z 0-9?()!-]#i', '', $_POST['searchcompanycod']);

    $getresultsquery = mysql_query('SELECT p.*, a.idProduct, a.idVehic, a.year, v.nameVehic, GROUP_CONCAT(a.year SEPARATOR "<br>"), GROUP_CONCAT(a.idVehic SEPARATOR "<br>"), GROUP_CONCAT(v.nameVehic SEPARATOR "<br>")
    FROM products p
    INNER JOIN application a ON p.idProduct = a.idProduct
    INNER JOIN vehic v ON a.idVehic = v.idVehic
    WHERE codCompany LIKE "%'.$codsearch.'%"
    GROUP BY p.codCompany') or die(mysql_error());

    $resultsrow = mysql_num_rows($getresultsquery);
    if($resultsrow > 1){
        echo "$codsearch";
        echo "<table class='table table-bordered' border=1>";
        echo "<tr>";
        echo "<th>Company Code</th><th>Original Code</th><th>Descr.</th><th>idProduct</th><th>idVehic</th><th>Vehic Name</th><th>Year</th>";
        echo "</tr>";

        while($getresultsline = mysql_fetch_array($getresultsquery)) {
            echo "<tr>";  
            echo "<td>" . $getresultsline['codCompany'] . "</td>";
            echo "<td>" . $getresultsline['codOriginal'] . "</td>";
            echo "<td>" . $getresultsline['typeDesc'] . "</td>";
            echo "<td>" . $getresultsline['idProduct'] . "</td>";
            echo "<td>" . $getresultsline['GROUP_CONCAT(a.idVehic SEPARATOR "<br>")'] . "</td>";
            echo "<td>" . $getresultsline['GROUP_CONCAT(v.nameVehic SEPARATOR "<br>")'] . "</td>";
            echo "<td>" . $getresultsline['GROUP_CONCAT(a.year SEPARATOR "<br>")'] . "</td>";  
            echo "</tr>";
        }
    }   else{
            echo "No results";}
}
?>  
</tbody>
</table>

SQL上的突出显示应该向您显示主要问题

改变

'SELECT table1.*, table2.productID, table2.veicleID, table2.date, table3.veicleNAME, GROUP_CONCAT(table2.date SEPARATOR "<br>"), GROUP_CONCAT(table3.veicleNAME SEPARATOR "<br>")
    FROM table1
    INNER JOIN table2 ON table1.productID = table2.productID
    INNER JOIN table3 ON table2.veicleID = table3.veicleID
    GROUP BY productID
    HAVING productID LIKE '%".$codsearch."%''
“选择表1.*,表2.productID,表2.veicleID,表2.date,表3.veicleNAME,组\u CONCAT(表2.date分隔符“
”),组\u CONCAT(表3.veicleNAME分隔符“
”) 来自表1 table1.productID=table2.productID上的内部联接table2 表2.veicleID=表3.veicleID上的内部联接表3 按产品ID分组 具有类似“%”的productID$codsearch。“%”

“选择表1.*,表2.productID,表2.veicleID,表2.date,表3.veicleNAME,组\u CONCAT(表2.date分隔符“
”),组\u CONCAT(表3.veicleNAME分隔符“
”) 来自表1 table1.productID=table2.productID上的内部联接table2 表2.veicleID=表3.veicleID上的内部联接表3 按产品ID分组 具有类似“%”的productID$codsearch。“%”

(请注意,我将第一个和最后一个单引号改为双引号)

SQL上的突出显示应该会显示主要问题

改变

'SELECT table1.*, table2.productID, table2.veicleID, table2.date, table3.veicleNAME, GROUP_CONCAT(table2.date SEPARATOR "<br>"), GROUP_CONCAT(table3.veicleNAME SEPARATOR "<br>")
    FROM table1
    INNER JOIN table2 ON table1.productID = table2.productID
    INNER JOIN table3 ON table2.veicleID = table3.veicleID
    GROUP BY productID
    HAVING productID LIKE '%".$codsearch."%''
“选择表1.*,表2.productID,表2.veicleID,表2.date,表3.veicleNAME,组\u CONCAT(表2.date分隔符“
”),组\u CONCAT(表3.veicleNAME分隔符“
”) 来自表1 table1.productID=table2.productID上的内部联接table2 表2.veicleID=表3.veicleID上的内部联接表3 按产品ID分组 具有类似“%”的productID$codsearch。“%”

“选择表1.*,表2.productID,表2.veicleID,表2.date,表3.veicleNAME,组\u CONCAT(表2.date分隔符“
”),组\u CONCAT(表3.veicleNAME分隔符“
”) 来自表1 table1.productID=table2.productID上的内部联接table2 表2.veicleID=表3.veicleID上的内部联接表3 按产品ID分组 具有类似“%”的productID$codsearch。“%”

(请注意,我将第一个和最后一个单引号更改为双引号)

找到了它。哈哈哈,太可怕了。。。如果($resultsrow>1){它永远不会是
,因为如果我搜索特定的内容,它将只返回1行。因此,如果($resultsrow>=1){


LOL

找到了它。哈哈哈,太糟糕了……如果($resultsrow>1){它永远不会是
,因为如果我搜索特定的东西,它只会返回1行。所以,如果($resultsrow>=1){


LOL

你拼写的
veicle
错了。应该是
vehicle
(只是吹毛求疵)。尽量避免使用
$getresultsline['GROUP\u CONCAT(table2.date SEPARATOR“
”)]
。能否粘贴原始
img表
,以便我可以轻松地将其转换为sqlfiddle的架构。您的引号错误/不匹配-
'SELECT…[您的查询]…如“%”“$codsearch.”%'
。由于您从单引号开始
,因此可以用双引号连接
。它应该是
…如“%“.$codsearch”。%"“
MySQL对GroupBy的可怕的非标准扩展让你做了一些奇怪的事情。读一下。如果你像这样滥用GroupBy,你的查询就会像会说话的驴子一样。它工作得不好并不令人惊讶,它工作得非常好。@Sean将此作为一个答案。你拼写的
veicle
错了。应该是
vehicle。”(只是吹毛求疵)。尽量避免使用
$getresultsline['GROUP_CONCAT(table2.date SEPARATOR“
”)]
之类的东西。能否粘贴原始
img表
,以便我可以轻松地将其转换为sqlfiddle的架构。您的引号错误/不匹配-
'SELECT…[您的查询]…例如“%$codsearch”%“
。由于您是从一个单引号开始的
,因此可以用双引号连接
。它应该是
…类似“%”。$codsearch.”%“
MySQL对GROUP BY的可怕的非标准扩展让你做了一些奇怪的事情。看看这个。如果你像这样滥用GROUP BY,你的查询就像会说话的驴子一样。它工作得不好并不令人惊讶,它工作得很好令人惊讶。@Sean将此作为一个答案发布。我更改了这段代码中的引号:%”.$codsearch。“%””但现在我遇到了另一个奇怪的问题。我更改了这段代码中的引号:“%.”.$codsearch.“%”但现在我遇到了另一个奇怪的问题。