0

コード内の変数 $query からエラーが発生します。

これは私のコードです:

$zzz = mysql_query("SELECT alias FROM table WHERE ColumnA = 'yes'");
while($aaa = mysql_fetch_array($zzz)){
    $array[] = $aaa['alias'];
}
$query = mysql_query("SELECT * FROM table2 WHERE alias NOT IN ($array) ORDER BY Column1 DESC, Column2 DESC");

table2 の WHERE 'alias' を、フェッチ配列 $aaa から取得した $array 内のどのデータとも等しくない SELECT クエリを作成したいと考えています。

fetch array from : Array in SQL Queryから配列を作成する手がかりを得ました。

しかし、$aaa から作成された配列の各データに「引用符」を追加する方法がわかりません。

誰かがこれを行う方法を教えてもらえますか? :)

4

2 に答える 2

2

ネストされたクエリを使用しないのはなぜですか? 例:

$query = mysql_query("SELECT * FROM table2 WHERE alias NOT IN (SELECT alias FROM table WHERE ColumnA = 'yes') ORDER BY Column1 DESC, Column2 DESC");

ただし、以下のコメントで述べたように、あなたのやり取りはインジェクション攻撃に対して脆弱であるようです. 他の人が述べたように、これはある程度回避できますが、私も述べたように、より良い方法の 1 つは PDO を使用することです。例:

try {
    $dbh = new PDO("mysql:host=localhost;dbname=dbname", "user", "password");
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $dbh->prepare("SELECT * FROM table2 WHERE alias NOT IN (SELECT alias FROM table WHERE ColumnA = :bool) ORDER BY Column1 DESC, Column2 DESC");
    $stmt->bindValue(":bool","yes");
    $stmt->execute();
} catch (\PDOException $e) {
    // Something went wrong
}

while ($row = $stmt->fetch()) {
    // do stuff with query
}

PDO には php 5.1 が同梱されています。

于 2013-03-02T09:04:33.833 に答える
0

直接使用しようとし$arrayていますが、必要な方法で印刷されません。リンクされた質問のアドバイスに従って、次を使用できますimplode

$newarray = implode(", ", $array);
$query = mysql_query("SELECT * FROM table2 WHERE alias NOT IN ($newarray) ORDER BY Column1 DESC, Column2 DESC");

引用符の追加に関しては、それらを連結するだけです。ただし、SQL インジェクションの脆弱性を回避するために、引用する前に値もエスケープします。

while($aaa = mysql_fetch_array($ambilLarikAkunTerlindungi)){
    $array[] = "'" . mysqli_real_escape_string($aaa['alias']) . "'";
}
于 2013-03-02T09:02:27.177 に答える