Güncelleştirme komut PHP düzgün çalışmıyor

3 Cevap php
$query = "UPDATE members SET userrole ='$userrole' WHERE member_id = '$member_id'";

Bazen güncellemeleri ve bazen ... ben sözdizimi doğru olup olmadığını bilmiyorum gelmez.

userrole ve member_id değerlerin dizi vardır. Güncelleştirme sorgusu kontrol ediliyor birden çok öğe için yapılır.

There is no error in mysql connection or error.... for the first time the update does not happen and after that it happens

3 Cevap

Her ayıklama ilgili. Size başlamak için bir mysql hatası varsa Birincisi, ben kontrol ederim.

$query = "UPDATE members SET userrole ='$userrole' WHERE member_id = '$member_id'";
echo mysql_errno($yourmysqlconnection) . ": " . mysql_error($yourmysqlconnection) . "\n"

Sonra $ userrole ve $ memberid Değişken doublecheck. Burada bulgularını yayınlamak, ve biz size daha fazla yardımcı olabilir

Good Luck, rAyt

Her iki değişken diziler içerir, bu iş olamaz. Sen Eşyaları tek tek güncellemek (ya da ben burada açıklamak olmaz bir beceriksiz MySQL CASE deyimi kullanmak) gerekir:

foreach ($userrole as $key => $role) {
    $query = "UPDATE members SET userrole ='$role'
              WHERE member_id = '$member_id[$key]'";
    // perform query ...
}

Ya da sadece $ member_id bir dizi ise:

$query = "UPDATE members SET userrole ='$userrole'
          WHERE member_id IN ('" . implode(',', $member_id) . "')";
// perform query ...

Sen daha onlar diziler olduğunu yansıtmak için değişkenleri adlandırmak gerekir. Sadece çoğul kullanın:

$userrole => $userroles
$member_id => $member_ids

Şey daha: bu değerler bir HTML formundan geliyor musun? Eğer evet ise, you should really kullanarak onları sterilize mysql_escape_string() . This can be done for multiple values at once using array_map() :

$userroles = array_map('mysql_escape_string', $userroles);
$member_ids = array_map('mysql_escape_string', $member_ids);
  1. Eğer biraz atlanır ettik sürece sizin girişleri kaçan değil - iyi değil!

    $userrole = mysql_real_escape_string($userrole);

  2. If $member_id is an array, you can't just put it into an update like that. I suspect you want something like this (after escaping of course!)

    $query = "UPDATE members SET userrole ='$userrole' WHERE member_id IN (" . implode(",", $member_id) . ")";