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

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

使用WHERE子句將數(shù)組傳遞給查詢

使用WHERE子句將數(shù)組傳遞給查詢

小唯快跑啊 2019-06-03 16:34:58
使用WHERE子句將數(shù)組傳遞給查詢給定一個(gè)ID數(shù)組$galleries = array(1,2,5)我希望有一個(gè)SQL查詢,它在WHERE子句中使用數(shù)組的值,如下所示:SELECT *FROM galleriesWHERE id = /* values of array $galleries... eg. (1 || 2 || 5) */如何生成這個(gè)查詢字符串以便與MySQL一起使用?
查看完整描述

4 回答

?
LEATH

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

小心!這個(gè)答案包含了一個(gè)嚴(yán)厲的SQL注入脆弱性。不要使用這里提供的代碼示例,除非確保任何外部輸入都是經(jīng)過(guò)消毒的。

$ids = join("','",$galleries);   $sql = "SELECT * FROM galleries WHERE id IN ('$ids')";


查看完整回答
反對(duì) 回復(fù) 2019-06-03
?
躍然一笑

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

使用PDO:[1]

$in = join(',', array_fill(0, count($ids), '?'));$select = <<<SQL
    SELECT *
    FROM galleries
    WHERE id IN ($in);SQL;$statement = $pdo->prepare($select);$statement->execute($ids);

使用MySQLi [2]

$in = join(',', array_fill(0, count($ids), '?'));$select = <<<SQL
    SELECT *
    FROM galleries
    WHERE id IN ($in);SQL;$statement = $mysqli->prepare($select);$statement->bind_param(str_repeat('i', count($ids)), ...$ids);
    $statement->execute();$result = $statement->get_result();

說(shuō)明:

使用SQLIN()運(yùn)算符檢查給定列表中是否存在值。

一般來(lái)說(shuō),它看起來(lái)是這樣的:

expr IN (value,...)

我們可以構(gòu)建一個(gè)表達(dá)式來(lái)放置在()從我們的陣列。請(qǐng)注意,括號(hào)內(nèi)必須至少有一個(gè)值,否則MySQL將返回一個(gè)錯(cuò)誤;這等于確保輸入數(shù)組至少有一個(gè)值。若要幫助防止SQL注入攻擊,請(qǐng)首先生成?為每個(gè)輸入項(xiàng)創(chuàng)建參數(shù)化查詢。在這里,我假設(shè)包含您的ID的數(shù)組被調(diào)用$ids:

$in = join(',', array_fill(0, count($ids), '?'));$select = <<<SQL
    SELECT *
    FROM galleries
    WHERE id IN ($in);SQL;

給定由三個(gè)項(xiàng)組成的輸入數(shù)組$select看起來(lái)像:


SELECT *FROM galleries
WHERE id IN (?, ?, ?)

再次注意,有一個(gè)?對(duì)于輸入數(shù)組中的每個(gè)項(xiàng)。然后,我們將使用PDO或MySQLi來(lái)準(zhǔn)備和執(zhí)行上述查詢。

使用IN()帶字符串的運(yùn)算符

由于綁定參數(shù)的存在,很容易在字符串和整數(shù)之間進(jìn)行更改。對(duì)于PDO,不需要更改;對(duì)于MySQLi更改str_repeat('i',str_repeat('s',如果你需要檢查字符串。

[1]:為了簡(jiǎn)潔起見(jiàn),我省略了一些錯(cuò)誤檢查。您需要檢查每個(gè)數(shù)據(jù)庫(kù)方法的常見(jiàn)錯(cuò)誤(或者將DB驅(qū)動(dòng)程序設(shè)置為拋出異常)。

[2]:需要PHP 5.6或更高版本。同樣,我省略了一些錯(cuò)誤檢查,以保證簡(jiǎn)潔性。


查看完整回答
反對(duì) 回復(fù) 2019-06-03
?
MMMHUHU

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

假設(shè)你事先正確消毒了你的輸入.。

$matches = implode(',', $galleries);

然后調(diào)整查詢:

SELECT *FROM galleries
WHERE id IN ( $matches )

根據(jù)數(shù)據(jù)集適當(dāng)?shù)匾弥怠?/trans>


查看完整回答
反對(duì) 回復(fù) 2019-06-03
  • 4 回答
  • 0 關(guān)注
  • 927 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(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)