Команда обновления не работает должным образом в PHP - PullRequest
0 голосов
/ 15 июля 2009
$query = "UPDATE members SET userrole ='$userrole' WHERE member_id = '$member_id'";

Иногда он обновляется, а иногда нет ... Я не знаю, правильный ли синтаксис.

userrole и member_id имеет массив значений. Запрос на обновление выполняется для нескольких проверяемых элементов.

Нет ошибки в соединении mysql или ошибка .... впервые обновление не происходит и после этого происходит

Ответы [ 3 ]

3 голосов
/ 15 июля 2009

Это не может работать, если обе переменные содержат массивы.Вам необходимо обновить элементы по одному (или использовать неуклюжий оператор MySql CASE, который я не буду здесь объяснять):

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

Или, если только $ member_id является массивом:

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

Вам следует дополнительно переименовать ваши переменные, чтобы отразить, что они являются массивами.Просто используйте множественное число:

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

. Более подробно: эти значения взяты из формы HTML?Если да, , вам следует санировать их, используя mysql_escape_string().Это можно сделать для нескольких значений одновременно, используя array_map():

$userroles = array_map('mysql_escape_string', $userroles);
$member_ids = array_map('mysql_escape_string', $member_ids);
1 голос
/ 15 июля 2009
  1. Если вы не пропустили немного, вы не избежите ввода - не хорошо!

    $userrole = mysql_real_escape_string($userrole);

  2. Если $ member_id является массивом, вы не можете просто поместить его в такое обновление. Я подозреваю, что вы хотите что-то вроде этого (после побега, конечно же!)

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

0 голосов
/ 15 июля 2009

Все дело в отладке. Во-первых, я бы проверил, есть ли ошибка mysql, чтобы начать вас.

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

Затем дважды проверьте переменную $ userrole и $ memberid. Опубликуйте свои выводы здесь, и мы можем помочь вам в дальнейшем

Удачи, Rayt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...