第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用 PHP 中的準(zhǔn)備語(yǔ)句使用 implode() 將多個(gè)整數(shù)插入到 IN 語(yǔ)句中?

如何使用 PHP 中的準(zhǔn)備語(yǔ)句使用 implode() 將多個(gè)整數(shù)插入到 IN 語(yǔ)句中?

PHP
呼如林 2023-07-21 18:07:44
語(yǔ)境我有一個(gè)供稿系統(tǒng),用戶可以在其中關(guān)注我網(wǎng)站上的其他用戶并查看他們發(fā)布的內(nèi)容,例如他們創(chuàng)建的線程。為了實(shí)現(xiàn)這一點(diǎn),我使用 AJAX 發(fā)送一個(gè)數(shù)組,其中包含用戶關(guān)注的人員的所有用戶 ID,以便在 SQL 語(yǔ)句中進(jìn)行查詢(我的 DBMS 是 MySQL)。然后,在 PHP 中,我嘗試使用語(yǔ)句獲取該數(shù)組并將其放入 SQL 查詢中IN。在這種特定情況下,用戶關(guān)注了 ID 為 11 和 12 的另外兩個(gè)人。因此,通過(guò) AJAX 將此數(shù)據(jù)發(fā)送到 PHP 代碼后,我可以使用并得到以下結(jié)果print_r($_POST['following']):Array ( [0] => 11 [1] => 12 )為了在我的 SQL 查詢中使用它,我使用以下代碼:if ($_SERVER['REQUEST_METHOD'] == 'POST') {$q = "SELECT forums.forum_id, forums.forum_title, forums.message, forums.idUsers, forums.box_id, forums.date, forums.seen, users.uidUsers, profileimages.image FROM forums JOIN users JOIN profileimages ON forums.idUsers = users.idUsers AND profileimages.idUsers = users.idUsers WHERE forums.idUsers IN (?) //code in questionORDER BY forums.forum_id DESC LIMIT 5 OFFSET ?";$stmt = mysqli_prepare($conn, $q);mysqli_stmt_bind_param($stmt, 'ii', $followingArray, $offset);$following = $_POST['following'];$followingArray = implode(", ", $following); //code in question$offset = $_POST['offset'];mysqli_stmt_execute($stmt);執(zhí)行查詢后,我獲取信息并將其發(fā)送回服務(wù)器。當(dāng)我這樣做時(shí),會(huì)返回五行:[{idUsers: 11, forumId: 11, seen: "false", forumTitle: "sixth random thread",…},…]0: {idUsers: 11, forumId: 11, seen: "false", forumTitle: "sixth random thread",…}1: {idUsers: 11, forumId: 10, seen: "false", forumTitle: "fifth random thread",…}2: {idUsers: 11, forumId: 9, seen: "false", forumTitle: "fourth random thread",…}3: {idUsers: 11, forumId: 8, seen: "false", forumTitle: "third random thread",…}4: {idUsers: 11, forumId: 7, seen: "false", forumTitle: "second random thread",…}這很好,除了這樣的事實(shí):它只考慮涉及用戶 ID 11 的帖子,而不是同時(shí)考慮 11 和 12。如果語(yǔ)句IN包含 ID 為 12 的用戶的帖子,那么結(jié)果會(huì)有所不同。直接進(jìn)入數(shù)據(jù)庫(kù)并手動(dòng)輸入值后再次查詢,如下所示:這讓我相信我implode()對(duì)準(zhǔn)備好的語(yǔ)句的實(shí)現(xiàn)是不正確的。問(wèn)題我是否應(yīng)該對(duì)該implode()函數(shù)進(jìn)行一些更改,例如在數(shù)組中的每個(gè)值周?chē)由弦?hào),以使其與INMySQL 中的語(yǔ)句一起使用?我嘗試過(guò)的事情我相信我的implode()函數(shù)格式不正確,因此嘗試將$followingArray變量從$followingArray = implode("', '", $following);to更改為$followingArray = "'" . implode("', '", $following) . "'";,它只返回 0 行。implode()當(dāng)嘗試將多個(gè)值插入 SQL 語(yǔ)句時(shí),如何格式化我的函數(shù)以使其正常工作?
查看完整描述

2 回答

?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

你永遠(yuǎn)不應(yīng)該自己弄亂引號(hào),因?yàn)檫@會(huì)導(dǎo)致 sql 注入的風(fēng)險(xiǎn)。


'此外,在這個(gè)特定的示例中,您正在插入數(shù)字,但如果您想插入像“O'Connor”這樣的字符串,甚至不討論是否要存儲(chǔ)包含和的任意文本,則在一般情況下它將不起作用:準(zhǔn)備好的語(yǔ)句會(huì)處理所有事情,安全性和引用意大利面條"。


我的建議是首先count輸入您要查詢的 id 編號(hào),然后?在IN子句中添加這些編號(hào),如下所示


$idCount = //count ids

$questmarks = array_fill(0, $idCount, "?");

$sql .= "IN(".implode(",", $questmarks).")";

如果你有 5 個(gè) id 要查詢,準(zhǔn)備好的 SQL 字符串將如下所示:


SELECT ...

WHERE 

AND id IN (?,?,?,?,?)

LIMIT ?


然后按順序綁定所有參數(shù)。


$params = [$id1,$id2,$id3,$id4,$id5,$offset];


mysqli_stmt_bind_param($stmt, "ii", ...$params);


查看完整回答
反對(duì) 回復(fù) 2023-07-21
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

$followingArray = "'" . implode("','", $following) . "'";



查看完整回答
反對(duì) 回復(fù) 2023-07-21
  • 2 回答
  • 0 關(guān)注
  • 181 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)