Авто-поиск с использованием PHP / MySQL и Ajax - PullRequest
0 голосов
/ 25 июня 2011

Я создал Autosuggestion, используя PHP / MySQL и Ajax, но когда я нажимаю на поисковое предложение с ('), оно не заполняет окно поиска, но все остальное делает.Например, я не могу нажать на результат поиска, который говорит: «Просто не могу насытиться».но я могу нажать на «Просто не могу получить достаточно».Ребята, вы можете сказать мне, почему?Спасибо

Код:

<?php
    include('conn2.php');
    $str = strtolower($_GET['content']);         
    if(strlen($str))
    {
        $sel = mysql_query("SELECT DISTINCT title FROM Music WHERE title LIKE '".mysql_real_escape_string(trim($str))."%'");
        if(mysql_num_rows($sel))
        {
            echo "<table border =\"0\" width=\"100%\">\n";
            if(mysql_num_rows($sel))
            {
                echo "<script language=\"javascript\">box('1');</script>";
                while($row = mysql_fetch_array($sel))
                {
                    $country = str_ireplace($str,"<b>".$str."</b>",($row['title']));
                    echo "<tr id=\"word".$row['title']."\" onmouseover=\"highlight(1,'".$row['title']."');\" onmouseout=\"highlight(0,'".$row['title']."');\" onClick=\"display('".$row['title']."');\" >\n<td>".$country."</td>\n</tr>\n";
                }
            }
            echo "</table>";
        }
    }
    else
    {
        echo "<script language=\"javascript\">box('0');</script>";
    }
?>

Ответы [ 2 ]

0 голосов
/ 25 июня 2011

Я думаю, что проблема может заключаться в том, что одинарные кавычки в результатах поиска конфликтуют с одинарными кавычками в приведенной ниже строке HTML, в которой используются одинарные кавычки для включения параметров в вызовы функций при наведении курсора мыши / выходе / клике.

echo "<tr 
id=\"word" . $row['title'] . "\" 
onmouseover=\"highlight(1,'" . $row['title'] . "');\" 
onmouseout=\"highlight(0,'" . $row['title'] . "');\" 
onClick=\"display('" . $row['title'] . "');\" >\n
    <td>" . $country . "</td>\n
</tr>\n";

Как вы увидите, обе функции highlight () и display () заключают параметр title в одинарные кавычки, и одинарные кавычки в заголовке могут конфликтовать с ними, нарушая тем самым ваш HTML.Попробуйте экранировать одинарные кавычки в $ row ['title'], и тогда это должно сработать.

Надеюсь, это поможет!

0 голосов
/ 25 июня 2011
$str = htmlentities(strtolower($_GET['content'])); 

Кроме того, вы можете использовать новую функцию filter_input для предотвращения внедрения SQL, если вы используете новую версию PHP.

К вашему сведению: http://php.net/manual/en/function.filter-input.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...