2016-07-07 3 views
0

私は一度クエリを呼び出す方法を理解しようとしています。sqlのループを使って行を更新するには?

私は画像、タイトル、およびdescに6種類の変数があります。

は、このコードでは、私は、単純な$クエリモデルを使用しようとしましたか0から6

$date = new DateTime("NOW"); 

    $image1 = 'SSSS'; 
    $title1 = 'AAAA'; 
    $desc1 = 'BBBB'; 

    $image2 = 'RRRR'; 
    $title2 = 'GGGG'; 
    $desc2 = 'VVVV'; 

    /// 4 vars later.... 

    $id = 6; 


    $get = $this->db->queryRow("UPDATE `featured` SET `image` = '{$image.$id}', `title` = '{$title.$id}', `desc` = '{$desc.$id}', `date` = '{$date->format('Y-m-d H:i:s')}' WHERE id = '{$id}'"); 
    return(object) $get; 
+0

でも結果を確認可能性がありますhttp://stackoverflow.com/questions/9257505/dynamic-variable-names-in-php – ckimbrell

+0

@ckimbrellしかし、私パフォーマンスの理由により6回クエリを呼びたくない場合は、一部のSQLコマンドで6行を一度更新することができます。 – Ivan

+0

パフォーマンス上の理由?彼らは何ですか? –

答えて

1

Querysのコレクションを構築するには、multi_query関数を使用します。 クエリ文字列をビルドして、データベースに渡し、セミコロンで連結します。

<?php 
for($i=0;$i <= $maxquerys;$i++){ 
    $query = "UPDATE `featured` SET `image` = '".$image.$id."', `title` =  ".$title.$id."', `desc` = '".$desc.$id."', `date` = '".$date->format('Y-m-d H:i:s')."' WHERE id = '".$id."';" 
} 

/* execute multi query */ 
if ($mysqli->multi_query($query)) { 

    while ($mysqli->next_result()); 
} 

/* close connection */ 
$mysqli->close(); 

あなたはこれが役立つはず

echo $mysqli->affected_rows; 
?> 
1

へのidのためのループに知っておく必要があり、それが正常に動作します。

echo $mysqli->affected_rows; 
?> 
+0

私は著者が最小限のクエリ数を望んでいると思う。これには 'x'長さの配列に対する' x'クエリと接続が必要です。 – Iceman

1
$query_build = ""; 
foreach($arr as $$image){ 
    $query_build .= "UPDATE `featured` SET `image` = '{$image.$id}', `title` = '{$title.$id}', `desc` = '{$desc.$id}', `date` = '{$date->format('Y-m-d H:i:s')}' WHERE id = '{$id}';"; 
} 
$get = $this->db->queryRow($query_build); 

によってデシベル

<?php 
$query = "UPDATE `featured` SET `image` = '".$image.$id."', `title` = ".$title.$id."', `desc` = '".$desc.$id}."', `date` = '".$date->format('Y-m-d H:i:s')."' WHERE id = '".$id."';" 

$result=$mysqli->query($query); 
    // Verify results 
if(!$result) { 
    $ErrMessage = "ErrSqlQuery:" . $mysqli->error . "\n"; 
    $mysqli->close(); 
    die($ErrMessage);   
} 

あなたも結果を確認することができますに渡すの有効なクエリ文字列を作成し、すべてのクエリを蓄積し、一度にすべてを実行します。

関連する問題