我正在尝试使用PHP表单中两个不同表单字段的输入在两个不同的列中找到匹配项。我正在引用我的mysql代码中输入到表单中的两个字符串变量,但它返回一个错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近' MATCH(abcdef)反对名称'在第1行
我尝试了一些语法变体,但没有成功。
$name = mysql_real_escape_string($_POST['studentname']);
$num = mysql_real_escape_string($_POST['studentnum']);
$qw = "SELECT name FROM students MATCH ($name) AGAINST name";
$qw1 = "SELECT studentnum FROM students MATCH ($num) AGAINST studentnum";
$namematch = mysql_query($qw) or die(mysql_error());
$nummatch = mysql_query($qw1) or die(mysql_error());
if (($namematch || $nummatch) == FALSE) {
die('Name or student number do not match those on record');
}
答案 0 :(得分:1)
我相信你在MATCH条款中有你的参数。你有:
$ qw =“SELECT FROM FROM FROM MATCH( $ name )AGAINST name ”;
相反它应该是:
$ qw =“SELECT FROM FROM FROM MATCH(名称)反对 $ name ”;
换句话说,MATCH(列)反对(参数),而不是相反。
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match
答案 1 :(得分:0)
首先,您在SQL语句中缺少WHERE
。
其次,您在[{1}}和MATCH
中的论据发生了逆转。 AGAINST
应该以列名作为参数。
E.g。
MATCH
应该是
SELECT name FROM students MATCH ($name) AGAINST name
并类似地调整您的第二个查询。
答案 2 :(得分:0)
试试这个,使用in_array匹配数组:
while($row = mysqli_fetch_array($qw)){
$namematch[] = $row['name'];
}
while($row2 = mysqli_fetch_array($qw)){
$nummatch[] = $row['studentnum'];
}
if(in_array($name,$namematch)){
echo 0;
}else{
echo 1;
}
*注意请避免使用mysql。我建议使用MYSQLi而不是使用MYSQL。仅供参考。