Php 如何在mysqli准备的语句中使用SQL-LIKE子句
我试图在mysqli准备的语句中使用一个类似SQL的子句 我已经尝试过其他例子,例如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
$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问题似乎是另一个问题,请参见聊天