mysql匹配...通过引用字符串变量来对抗

时间:2014-04-16 02:47:35

标签: php mysql

我正在尝试使用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');
}

3 个答案:

答案 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。仅供参考。