PHP:mysql查询;其中前3个(或4,5,6,取决于字符串长度)字符='$字符串'&引用;

PHP:mysql查询;其中前3个(或4,5,6,取决于字符串长度)字符='$字符串'&引用;,php,mysql,Php,Mysql,我正在做一个ajax建议函数 用户输入一个单词(如ICE),然后ajax脚本将其传递给一个.php脚本,该脚本在数据库中查找该单词,并建议使用ICECREAM 这就是我被困的地方。我需要一个如下的查询: SELECT * FROM table WHERE first str_len($string) characters = $string 你能帮我一下吗?你想要这个 SELECT ... WHERE field LIKE '$string%' 你想要这个 SELECT ... WH

我正在做一个ajax建议函数

用户输入一个单词(如ICE),然后ajax脚本将其传递给一个.php脚本,该脚本在数据库中查找该单词,并建议使用ICECREAM

这就是我被困的地方。我需要一个如下的查询:

SELECT * FROM table WHERE first str_len($string) characters = $string
你能帮我一下吗?

你想要这个

SELECT
 ...
WHERE
  field LIKE '$string%'
你想要这个

SELECT
 ...
WHERE
  field LIKE '$string%'
这是安全的,因为
$length
保证为整数,因此无需将其设为参数


这是安全的,因为
$length
保证为整数,因此无需将其作为参数。

只是不要忘记正确的转义——而是将准备好的语句与PDO或MySQLi一起使用,在查询中永远不要使用$string!只是不要忘记正确的转义——而是在PDO或MySQLi中使用准备好的语句,永远不要在查询中使用$string!我认为在这种情况下你不会想要前导通配符。我认为在这种情况下你不会想要前导通配符。
$length = strlen($input);
$statement = $pdoObject->prepare("SELECT * FROM table WHERE LEFT(first, $length) = :input");
$statement->execute(array(':input' => $input));