我有这种形式,输出一些字母和一个字长。但是我从数据库中获得正确的输出时遇到了一些问题。
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$letters = mysql_real_escape_string($_POST['letters']);
$length = mysql_real_escape_string($_POST['length']);
echo "Letters: $letters";
echo "Lengte: $length";
$res=mysql_query("SELECT word FROM words WHERE word REGEXP '[$letters]{$length}' ")
or die ('Error: '.mysql_error ());
while ($row=mysql_fetch_array($res)){
echo $row['word'];
echo "<br />";
}
}
else {
echo "Foutje";
}
如果我将$ length更改为我的脚本工作的表单输入的整数。复制/粘贴[$ letters] 6次也可以。我猜引号有问题,但我完全无法弄清楚究竟是什么。
谁能看到我做错了什么? 感谢。
答案 0 :(得分:0)
PHP正在将{}
解释为变量内部的分隔符,因为您使用的是双引号字符串。用连接改变你的引用:
$res=mysql_query("SELECT word FROM words WHERE word REGEXP '[" . $letters . "]{" . $length ."}'")
或者在双引号字符串中加倍{}
,以便将外部对解释为文字。
$res=mysql_query("SELECT word FROM words WHERE word REGEXP '[$letters]{{$length}}' ")
注意,您还应验证$length
是否包含正整数。
if (!ctype_digit($length)) {
// error - length must be an int
}
答案 1 :(得分:0)
尝试这样做:
res=mysql_query("SELECT word FROM words WHERE word REGEXP '[".$letters."]{".$length."}' ")
我有一种预感,即$正在被解释为正则表达式的一部分