2012-06-01 5 views
0

select query возвращает «массив» вместо значения. Из-за того, что оператор insert выдает ошибку.Query возвращает массив вместо значения

Это мой метод сохранения, где я получаю значение идентификатора и используя этот идентификатор в вставки заявления

function save() 
      { 
       if(isset($_POST['description']) && isset($_POST['age']) && isset($_POST['country']) && isset($_POST['state'])) { 
       $descrip = $_POST['description']; 
       $ag = $_POST['age']; 
       $country = $_POST['country']; 
       $state= $_POST['state']; 
      } 
       $id = $this->db->query("SELECT table_tbldescription.Id FROM table_tbldescription Left join table_tblpricetype1 as a on a.Id=table_tbldescription.Id where table_tbldescription.Description = '". $descrip. "'"); 
       $arr = $id->result(); 
       //$arra = $sql->result(); 
       if(!empty($arr)) { 
       $sql = $this->db->query("Insert into table_tblpricetype1 (Id,age,country ,state) VALUES('". $arr. "' ,'". $age. "' , '". $country. "','". $state. "')"); 
       } 
       else{ 
       return false; 
       } 
     } 
+1

Обратите внимание, что это также, кажется, очень уязвимы для SQL инъекций. Поля $ _POST должны быть дезинфицированы с помощью 'mysqli_escape_string' или чего-то подобного перед использованием в запросе. – phsource

+0

Какой тип объекта '$ this-> db'? Кроме того, вам действительно нужно сделать некоторые исследования о том, как избежать атак SQL-инъекций, прежде чем вы встретите [Bobby Tables] (http://bobby-tables.com/) – megaflop

ответ

0

Попробуйте использовать:

$arr = $id->result()[0]; 
+0

'$ arr = $ id-> result() [0 ]; ', вероятно, является правильной версией статута. Я также на самом деле не помню, если вы можете индексировать возврат такой функции, так что что-то вроде '$ arr = $ id-> result(); $ arr = $ arr [0]; 'может быть лучше. – phsource

Смежные вопросы