Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL PHP通配符_Php_Mysql - Fatal编程技术网

MYSQL PHP通配符

MYSQL PHP通配符,php,mysql,Php,Mysql,我有一个由AJAX调用的php脚本,它总是不返回我希望看到的通配符结果。不知道怎么了。奇怪的是我试图在DB中查找不寻常的字符,比如=。-,;,等等。我正在构建的应用程序是一个英文字符到盲文查找 这是我的密码 $ENG = "english phrase" // Could be Equal sign, dash whatever $ENG_WILD = $ENG."%"; //Add in wildcard $result = mysql_query("SELECT * FROM $DB_TAB

我有一个由AJAX调用的php脚本,它总是不返回我希望看到的通配符结果。不知道怎么了。奇怪的是我试图在DB中查找不寻常的字符,比如=。-,;,等等。我正在构建的应用程序是一个英文字符到盲文查找

这是我的密码

$ENG = "english phrase" // Could be Equal sign, dash whatever
$ENG_WILD = $ENG."%"; //Add in wildcard
$result = mysql_query("SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR '$END_WILD' ");
$row = mysql_fetch_array( $result );
$result = mysql_query("SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR '$END_WILD' ");
if (mysql_num_rows($result)==0) {
    die($Failed . mysql_error());
}

// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
    // Print out the contents of each row
    echo $box."Dots needed for..".$row['ENG']."..are..".$row['BR_PAR']."..The Rule that applies..".$row['RULE']."</p>".$box_end;
} 
我试着用*代替%但失败了。下面是数据库中ENG:=Nemeth Code:等号下的一个条目示例

如果我以输入作为一个整体运行上面的脚本,我会得到正确的结果,但是如果以=或=Nemeth运行脚本,我将不会得到任何结果。我不明白-我本以为通配符会让我得到我想要的。谢谢大家。

您的变量是$ENG\u-WILD,但您在mysql\u查询函数中使用了$END\u-WILD。ENG vs END

如果您解决了这个问题,但它仍然不起作用,请记住,只有当短语出现在该字段的开头时,在结尾使用%才会匹配。在开始和结束时使用一%,如果它包含你的短语在开始,在任何中间,或在结束。
SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR '$END_WILD'
可能没有做你认为的事。在括号中,它是这样做的:

SELECT * FROM $DB_TABLE WHERE (ENG LIKE '$ENG') OR ('$END_WILD')
当我认为你想要的时候:

SELECT * FROM $DB_TABLE WHERE ENG LIKE '$ENG' OR ENG LIKE '$END_WILD'
查找“this”和“this%”也是多余的,因为第二个也将返回“this”

您也在毫无明显原因地两次执行完全相同的查询。我猜有很多代码我们没有看到


最后,结果为零并不意味着您的查询失败,该查询可能没有结果。

Nice Catch。。。感觉像是一个完整的Tard,但问题仍然存在。请稍等一分钟,如果我手动将%放入POST Search字段,它会正常工作;因此,当PHP在%SQL上标记时,会发生一些事情,SQL没有正确识别它?我必须以某种特殊的方式将%声明到PHP字符串中吗?因此,如果我手动将th%放入通过POST发送到PHP的字符串中,我会得到一个正确的响应th&盲文符号。我在代码中没有看到任何$u POST变量。你能在这里用完整的代码更新原始的问题或评论吗?这样我们就可以清楚地看到你在做什么了?