Php 如何在mysqli准备的语句中使用SQL-LIKE子句

Php 如何在mysqli准备的语句中使用SQL-LIKE子句,php,sql,mysqli,Php,Sql,Mysqli,我试图在mysqli准备的语句中使用一个类似SQL的子句 我已经尝试过其他例子,例如 $sysName=“{$\u POST['ss']}%” 和 $sysName=$\u POST['ss'].%' if(isset($\u POST['ss'])){ $sysName=$_POST['ss'].%'; 如果(strlen($sysName)>0){ $qry=mysqli\u stmt\u prepare($link,“SELECT*FROM tblschool WHERE systemNa

我试图在mysqli准备的语句中使用一个类似SQL的子句

我已经尝试过其他例子,例如
$sysName=“{$\u POST['ss']}%”
$sysName=$\u POST['ss'].%'

if(isset($\u POST['ss'])){
$sysName=$_POST['ss'].%';
如果(strlen($sysName)>0){
$qry=mysqli\u stmt\u prepare($link,“SELECT*FROM tblschool WHERE systemName LIKE?”);
mysqli_stmt_bind_param($qry,'s',$sysName);
mysqli_stmt_execute($qry);
$result=mysqli\u stmt\u get\u result($qry);
}
}
如果$_POST['ss']用sys一词填充,并且TBLSchool中存在一个名为'system'的系统名,则结果集应包括与'system'行相关的行信息。不管我在里面放了什么,结果总是空的。我与数据库的连接成功。我已经使用mysqli_查询和直接字符串成功地进行了测试,但是当我切换到LIKE子句上的prepared语句时,它就不起作用了。我已经为这个问题绞尽脑汁将近一整天了

编辑:回应第一个答案 还是不行

$stmt=mysqli\u stmt\u init($link);
$sysName=“sys%”;
如果(strlen($sysName)>0){
如果(!mysqli_stmt_prepare($stmt,“从tblSchools中选择*,systemName像什么?”){
回声“1”;
出口
}否则{
if(mysqli_stmt_bind_param($stmt,'s',$sysName))回显“2”;
如果(mysqli_stmt_execute($stmt))回显“3”;
$result=mysqli\u stmt\u fetch($stmt);
$row=mysqli\u fetch\u数组($result);
var_转储($row);
呼应“嘿”;
}
}
打印2和3而不是1尝试以下操作:

$link = \mysqli_connect("127.0.0.1", "user", "password", "dbname");

if (!$link) {
    $error = \mysqli_connect_error();
    $errno = \mysqli_connect_errno();
    print "$errno: $error\n";
    exit();
}

$query = "SELECT * FROM tblSchools WHERE systemName LIKE ?";

$stmt = \mysqli_stmt_init($link);
if (!\mysqli_stmt_prepare($stmt, $query)) {
    print "Failed to prepare statement\n";
    exit;
} else {
    $sysName = 'sys%';
    \mysqli_stmt_bind_param($stmt, "s", $sysName);

    \mysqli_stmt_execute($stmt);
    $result = \mysqli_stmt_get_result($stmt);
    $row = mysqli_fetch_array($result);
    var_dump($row);
}

当你说结果总是返回空值时,它对我有效,你的意思是
$result
为空吗?$result为空,当我使用mysqli_stmt_num_rows($qry)或mysqli_num_rows($result)时,如果语句是UPDATE、DELETE或INSERT,两者都返回空白,可以使用mysqli_stmt_infected_rows()函数确定受影响行的总数。同样,如果查询生成结果集,则使用mysqli_stmt_fetch()函数。请看:@AndreaManzi我以前使用过mysqli\u stmt\u get\u result,并让它工作。我只是尝试插入建议的mysqli_stmt_fetch,结果是一样的。什么是$qry<代码>$result=mysqli\u stmt\u fetch($qry)仍然不起作用。请参见响应中代码块的原始问题中的编辑它与op有何不同?@YourCommonSense问题似乎是另一个问题,请参见聊天