亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用sql搜索字母和更新數據

使用sql搜索字母和更新數據

PHP
心有法竹 2022-06-17 16:46:24
下一個代碼是從數據表中所有行的“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;}?> 
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

我不應該回答這個問題,但我想幫助你。首先,如果您尚未啟用錯誤報告,則必須啟用。閱讀如何在 MySQLi 中獲取錯誤消息?. 我還建議切換到 PDO 而不是 mysqli,因為它更好更簡單。

你的 PHP 和 SQL 有問題。

  • 您似乎沒有在任何地方連接到數據庫。

  • 您的代碼沒有使用準備好的語句,這使得它容易受到 SQL 注入的影響。

  • 你可以exit從你的代碼中刪除,它不會做任何事情

  • 的語法LIKELIKE '%string%',沒有=

一個很好的 mysqli 代碼示例應該如下所示。

<?php


// report all errors. Check the error log or enable display errors in PHP config

error_reporting(E_ALL);


// Always enable mysqli error reporting

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$db_conx = new mysqli('localhost', 'username', 'password', 'databaseName');

$db_conx->set_charset('utf8mb4'); // always set the charset


if (isset($_POST['str'])) {

    $strid = '%'. $_POST['str'] .'%';

    // prepare -> bind -> execute

    $stmt = $db_conx->prepare("UPDATE notifications SET did_read=1 WHERE note LIKE ?");

    $stmt->bind_param('s', $strid);

    $stmt->execute();

    echo 'did_read_ok';

}


查看完整回答
反對 回復 2022-06-17
  • 1 回答
  • 0 關注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號