Php mysql匹配…通过引用字符串变量

Php mysql匹配…通过引用字符串变量,php,mysql,Php,Mysql,我试图使用PHP表单中两个不同表单字段的输入在两个不同的列中查找匹配项。我正在引用mysql代码中输入到表单中的两个字符串变量,但它返回了一个错误: 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 第1行“与名称匹配(abcdef)”附近 我尝试了几种不同的语法,但没有成功 $name = mysql_real_escape_string($_POST['studentname']); $num = mysql_real_escape_string($_POS

我试图使用PHP表单中两个不同表单字段的输入在两个不同的列中查找匹配项。我正在引用mysql代码中输入到表单中的两个字符串变量,但它返回了一个错误:


您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 第1行“与名称匹配(abcdef)”附近

我尝试了几种不同的语法,但没有成功

$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');
}

首先,SQL语句中缺少
WHERE

第二,将
匹配
中的参数与
相反
MATCH
应提供列名作为参数

例如

根据姓名从学生匹配($name)中选择姓名

应该是

从将(姓名)与(“$name”)匹配的学生中选择姓名。


同样地,调整您的第二个查询。

尝试此操作,使用in_数组匹配数组:

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

我相信您的参数在MATCH子句中是反向的。你有:

$qw=“从学生匹配中选择姓名($name)与姓名匹配”

相反,它应该是:

$qw=“从学生匹配(姓名)中选择姓名与$name

换句话说,将()与(参数)匹配,而不是相反


它返回了什么错误?(将此信息放入您的问题中。)您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“MATCH(abcdef)from name”附近使用的正确语法。我尝试按照您所述更正语法,但仍然返回相同的错误。@Graham请参阅编辑。这能解决问题吗?我在“反对”参数中看到有关引号的冲突信息。我尝试了您在编辑中指定的内容,并确保所有内容都与全文搜索兼容。现在我得到了错误“Unknown column.”在where子句中“我假设
name
studentnum
students
表中的列名。所以我很难堪。