как обновить несколько данных с условием где - PullRequest
0 голосов
/ 28 июня 2018

Я хочу обновить несколько данных из массива, где условие (2 сообщения значение)

$markid=50008; (Post Item)
$ass='Att1';(Post Item)

$data=array( 'regno'=>$regno,'assmark'=>$assmark);

$query="update pre_marks set $ass=$assmark where regno=$regno and markid=$markid" ;
$this->db->query($query);

Мой вывод должен быть

Array
(
    [regno] => 210417103001
    [Att1] => 58
)
Array
(
    [regno] => 210417103002
    [Att1] => 23
)
Array
(
    [regno] => 210417103003
    [Att1] => 20
)
Array
(
    [regno] => 210417103004
    [Att1] => 45
)
Array
(
    [regno] => 210417103005
    [Att1] => 25
)
Array
(
    [regno] => 210417103006
    [Att1] => 0
)

Это тоже сработало. Но ошибка приходит

Произошла ошибка базы данных Номер ошибки: 1064

У вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MariaDB для правильного использования синтаксиса около 'где regno = и markid = 50009' в строке 1

обновить pre_marks set Att1 = где regno = и markid = 50009

Имя файла: C: /xampp/htdocs/Admin-Panel/system/database/DB_driver.php

Номер строки: 691

Как это решить?

<code>$markid = $this->input->post('markid');
$ass = $this->input->post('sel_ass1');                 
for($i=12;$i<=$i+6;$i++) {       
    $regno= $objWorksheet->getCellByColumnAndRow(2,$i)->getValue();
    $assmark= $objWorksheet->getCellByColumnAndRow(5,$i)->getValue();

    $data=array('regno'=>$regno,$ass=>$assmark);
    echo '<pre>';
    print_r($data);
    echo '
'; $ this-> db-> where (['regno' => $ regno, 'markid' => $ markid]); $ this-> db-> update ('pre_marks', [$ ass => $ assmark]); if ($ this-> db-> disabled_rows ()> 0) { вернуть ИСТИНА; } еще { вернуть ЛОЖЬ; } }

1 Ответ

0 голосов
/ 28 июня 2018

Вы должны проверить переменные, прежде чем использовать их в запросе!

if(!empty($markid) && !empty($ass)) {
  if(!empty($assmark) && !empty($regno)) {
    $this->db->set($ass, $assmark)
      ->where("regno", $regno)
      ->where("markid", $markid)
      ->update("pre_marks");
    if ($this->db->affected_rows() > 0 ) {
      echo TRUE;
    }
    else {
      echo FALSE;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...