下一个代码是从数据表中所有行的“note”列中查找字符串中的字符。一旦它获得行“id”,那么它应该在同一行中将“did_read”列更新为值“1”。但没有成功。我必须做哪些更正才能使其正常工作?
<?php
if (isset($_POST['str'])){
$strid =$_POST['str'];
$sql="SELECT id FROM notifications WHERE note CONTEINS='$strid' ";
$query = mysqli_query($db_conx, $sql);
$statusnumrows = mysqli_num_rows($query);
if($statusnumrows> 0){
while ( $row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
$statusid = $row["id"];
$sql = "UPDATE notifications SET did_read='1' WHERE id='$statusid'";
$query = mysqli_query($db_conx, $sql);
echo 'did_read_ok';
exit;
}
}
}
?>
现在看,我认为接下来我应该更容易使用。但也无法正常工作。
<?php
if (isset($_POST['str'])){
$strid= mysqli_real_escape_string($db_conx, $_POST['str']);
$sql = "UPDATE notifications SET did_read='1' WHERE note LIKE='$strid' ";
$query= mysqli_query($db_conx, $sql);
echo 'did_read_ok';
exit;
}
?>
在您的帮助下,我在评论中得出了一些结论。如果我取消注释,代码的第一部分就可以工作。但是我不明白为什么条件循环中的其他代码在我得到 "string(10)'status_218'" 和 "did_read_ok" 时不起作用?我正在使用 ajax.send() 发送“str”变量。
<?php
//$strid= 'status_218';
// $sql = "UPDATE notifications SET did_read='1' WHERE note LIKE '%$strid%'";// not working:LIKE CONCAT('%', $strid, '%')
// $query= mysqli_query($db_conx, $sql);
if (isset($_POST['str'])){
$strid= $_POST['str'];
var_dump($strid);//I get: string(10)status_218
$sql = "UPDATE notifications SET did_read='1' WHERE note LIKE='%$strid%'";
$query= mysqli_query($db_conx, $sql);
echo 'did_read_ok';
exit;
}
?>
心有法竹
倚天杖
随时随地看视频慕课网APP