我在php中进行了这个SQL查询。但查询结果出现在ERROR中。如果删除此AND first_name LIKE '{$first_name}%'
,它可以正常工作并产生正确的输出。我无法遵循以下语法的错误。
任何帮助将非常感激。感谢
$db = new PDO("mysql:dbname=newbie");
$first_name=$_GET["firstname"];
$first_name =$db->quote($first_name);
$last_name=$_GET["lastname"];
$last_name=$db->quote($last_name);
$rows=$db->query("SELECT id,first_name FROM actors WHERE last_name=$last_name AND first_name LIKE '{$first_name}%' ORDER BY film_count DESC LIMIT 1");
答案 0 :(得分:1)
我认为这可能是因为你错过了$lastname
上的引号,因为它是一个文本字段。
$db = new PDO("mysql:dbname=newbie");
$first_name=$_GET["firstname"];
$first_name =$db->quote($first_name);
$last_name=$_GET["lastname"];
$last_name=$db->quote($last_name);
$rows=$db->query("SELECT id,first_name FROM actors WHERE last_name='{$last_name}' AND first_name LIKE '{$first_name}%' ORDER BY film_count DESC LIMIT 1");
答案 1 :(得分:0)
您没有正确使用PDO,并且让您面临巨大的SQL injection bugs风险。使用占位符并转义数据:
$sth = $db->prepare("SELECT id,first_name FROM actors WHERE last_name=:lastname AND first_name LIKE :first_name ORDER BY film_count DESC LIMIT 1");
$result = $db->execute(array("firstname" => "%" . $_GET["firstname"] . "%", "lastname" => $_GET["lastname"]));
有很多方法可以做到这一点,所有这些都在various tutorials中进行了描述。
答案 2 :(得分:0)
您可以删除' {'和'}'周围' $ first_name'。当变量在双引号内时,它们不是必需的。