У меня проблема с обновлением запроса MySQL, и я думаю, что это так странно. я бегу Обновить запрос в моем коде с Where
пункт в этом запросе. Но когда я прекращаю этот запрос, все данные в моей таблице становятся NULL, и это не только в данных, содержащихся в Where
пункт, но во всей таблице.
Это мой код:
$book = json_decode($this->input->post('stringify'));
foreach ($book as $row)
{
$data = array(
'price' => $row->price,
'date_modified' => date("Y-m-d H:i:s"),
'modified_by' => $row->username
);
$this->db->where('id', $row->id);
$this->db->where('book_id', $row->book_id);
$this->db->update('book_availability', $data);
}
Я создаю этот запрос с помощью codeigniter Framework. Я просто хочу знать, почему этот запрос обновляет все данные в моей таблице, а не только данные в Where
пункт. Возможно, сервер вызвал эту проблему или что-нибудь еще, возможно, вызвало это. Я надеюсь, что кто-то может подсказать мне, почему это произошло. Благодарю.
Это может произойти, если нет значения, связанного с переменными, которые вы используете для условия где
Всегда полезно проверить ваши данные перед вставкой в базу данных:
foreach ($book as $row)
{
if(isset($row->id) && $row->id != '' && isset($row->book_id) && $row->book_id != '' ) {
$data = array(
'price' => $row->price,
'date_modified' => date("Y-m-d H:i:s"),
'modified_by' => $row->username
);
$this->db->where('id', $row->id);
$this->db->where('book_id', $row->book_id);
$this->db->update('book_availability', $data);
}
}
Теперь данные БД будут обновляться, только если у вас есть значения для заданных переменных. Вы можете использовать больше проверок, таких как проверка идентификатора, если он числовой (согласно структуре вашей БД) или недействительный.
Может быть, попробовать это
$this->db->update('mytable', $data, "id = 4");
Таким образом, вы можете передать ваше предложение WHERE в функцию обновления
Я бы порекомендовал создать предложение WHERE, присвоить его переменной, а затем передать его функции обновления в качестве третьего параметра.
Надеюсь это поможет