Php mysql匹配…通过引用字符串变量
我试图使用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
您的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
表中的列名。所以我很难堪。