如何使用%s在mysql中使用“like”代码查询搜索

时间:2015-08-12 03:27:56

标签: php mysql

我有sql查询来搜索这样的关键字

{{1}}

我有问题,如果我用{{1}}搜索名称,我必须输入完整的名称,我只想要输入名称的一部分,我的查询可以在我的表数据库中找到整个名称。任何帮助?

5 个答案:

答案 0 :(得分:0)

尝试此操作:

自:

$query_rec_mhs_2015 = sprintf("SELECT * FROM mhs_2015 WHERE no_peserta_mhs_2015 = %s or nama_mhs_2015 like %s ", GetSQLValueString($colname_rec_mhs_2015, "text"), GetSQLValueString($colname_rec_mhs_2015, "text"));  

收件人://I've chage %s to '/%'

$query_rec_mhs_2015 = sprintf("SELECT * FROM mhs_2015 WHERE no_peserta_mhs_2015 = '%s' OR nama_mhs_2015 like '%s' ", GetSQLValueString($colname_rec_mhs_2015, "text"), GetSQLValueString($colname_rec_mhs_2015, "text"));

答案 1 :(得分:0)

    $query_rec_mhs_2015 = sprintf("
    SELECT * FROM mhs_2015 WHERE nama_mhs_2015 like %s 
    ", 
 GetSQLValueString('%' . str_replace(array('%', '_') , array('\%' ,'\_'), $colname_rec_mhs_2015) . '%', "text")
    );

答案 2 :(得分:0)

为什么不使用:

if (isset($_POST['no_peserta_mhs_2015'])) {
$colname_rec_mhs_2015 = $_POST['no_peserta_mhs_2015'];
}
mysql_select_db($database_connect, $connect);
$query_rec_mhs_2015 = sprintf("SELECT * FROM mhs_2015 WHERE no_peserta_mhs_2015 = %s or nama_mhs_2015 like '%%%s%%' ", GetSQLValueString($colname_rec_mhs_2015, "text"), GetSQLValueString($colname_rec_mhs_2015, "text"));

希望它有所帮助:)

答案 3 :(得分:0)

我相信您的代码必须更改为

%s'%s',但在第一种使用 = 的情况下,无法使用,而野性字符可以使用LIKE运算符。

所以你的查询将是

sprintf("SELECT * FROM mhs_2015 WHERE no_peserta_mhs_2015 = 's' or nama_mhs_2015 like '%s%'", 
GetSQLValueString($colname_rec_mhs_2015, "text"),
GetSQLValueString($colname_rec_mhs_2015, "text"));

为了更好地理解在SQL中使用wildcard characters的能力

答案 4 :(得分:0)

感谢您的所有答案,我用这样简单的语法解决了我的问题:

sprintf("SELECT * FROM mhs_2015 WHERE no_peserta_mhs_2015 = %s or nama_mhs_2015 LIKE %s", GetSQLValueString($colname_rec_mhs_2015, "text"),GetSQLValueString("%" . $colname_rec_mhs_2015 . "%", "text"));