2016-10-29 3 views
-5

У меня есть этот код для добавления данных в MySQL.
Ошибка Looping в PHP

$arr = array("Dr APJ Abdul Kalam", "Benjamin Franklin", "Albert Einstein", "Mahatma Gandhi", "Abraham Lincoln", "Gen. Patton", "Stephen Hawking", "Mark Twain", "George Washington"); 
foreach ($arr as &$value) { 
$sql="UPDATE ci_thought SET text='".$value."'"; 
If ($this->db->query($sql) === TRUE) { 
    echo "added ".$value; 
} else{ 
    echo "ERROR"; 
} 
} 

Что она делает это ОБНОВЛЕНИЕ текст Row, но все значения являются Джордж Вашингтон.
У меня есть 366 строк и вы хотите добавить эти 9 циклов, чтобы после каждых 9 разных записей этот код запускался снова, пока не вставили 366 значений.

Пожалуйста, помогите сделать правильный код

+0

, что хотите на самом деле? –

+0

я хочу, чтобы удалить данные предыдущего 366-Роу и вставить эти новые данные, но я не знаю, как петля вставки в MySql

+1

Взгляните на [PHP-Control Structures] (http://php.net/manual/en/language.control-structures.php), [foreach] (http://php.net/manual/en/control -structures.foreach.php) и [Массивы] (http://php.net/manual/en/language.types.array.php). Также есть много учебников или выучить PHP-сайты, которые должны дать вам начинайте как минимум. Когда у вас есть сценарий, вернитесь с конкретным вопросом. –

ответ

1

Я решил проблему, используя следующий код

$arr = array( "Dr APJ Abdul Kalam", 
        "Benjamin Franklin", 
        "Albert Einstein", 
        "Mahatma Gandhi", 
        "Abraham Lincoln", 
        "Gen. Patton", 
        "Stephen Hawking", 
        "Mark Twain", 
        "George Washington" 
    ); 
for($i= 1; $i <=366;) { 
foreach ($arr as &$value){ 

$sql="UPDATE ci_thought SET text='".$value."' WHERE id=".$i; 
If ($this->db->query($sql) === TRUE) { 
    echo $i.". added ".$value."<br>"; 
} else{ 
    echo "ERROR"; 
} 
$i++; 
} 

} То, что я сделал это я добавил цикл.
Я назначил $i=1; и фиксированное значение i меньше или равно 366 на $i <= 366, и я делаю цикл по оператору for и приращению i на i++ Никаких других изменений сделано!

EDIT МЕНЯЕТ

Этот код теперь работает ... Я надевал дополнительный i++, который теперь установлен, и это работает полностью хорошо. Извините за любые орфографические, грамматические ошибки и дубликата пост :(

-2
<?php 

     $arr = array( "Dr APJ Abdul Kalam", 
         "Benjamin Franklin", 
         "Albert Einstein", 
         "Mahatma Gandhi", 
         "Abraham Lincoln", 
         "Gen. Patton", 
         "Stephen Hawking", 
         "Mark Twain", 
         "George Washington" 
     ); 
     // IF YOU WANT TO UPDATE THE text COLUMN OF ALL RECORDS 
     // YOU MAY FIRST NEED TO GET THEIR ID 
     $idSQL = 'SELECT id FROM ci_thought'; 
     $ids = $this->db->query($sql); 
     $key = 0; 
     var_dump($ids); 
     exit; 

     // ASSUMING $ids IS AN ARRAY OF OBJECTS WITH id KEY, 
     // YOU CAN USE THE IDS FOR THE UPDATED 
     foreach ($ids as $index=>$data) {    
      if($index%9 == 0){ 
       $key = 0;      
      } 
      $id  = $data->id; 
      $sql = "UPDATE ci_thought SET text='". $arr[$key] ."' WHERE id='{$id}'"; 
      if ($this->db->query($sql) === TRUE) { 
       echo "added ".$value; 
      } else{ 
       echo "ERROR"; 
      } 
      $key++; 
     } 
+0

Спасибо за ответ. Этот код дает мне ошибку ... Я создал свой собственный код с некоторыми исправлениями, опубликованными выше, но которые пропускают значения, такие как 10, 20, 30, 40 ..... Необходимая помощь –

+0

Не публикуйте только код. объясните, что вы изменили и почему – Jens

+0

@AnhatSingh Попробуйте 'var_dump ($ ids)' .... что вы получаете? – Poiz