2015-09-01 3 views
-1

У меня проблема с моим запросом, он ничего не возвращает.PDO-запрос ничего не возвращает

if($champ == "type_id")  
      { 
       $bdd = new PDO("mysql:dbname=maruecondi_db;host=localhost","root",""); 
       $request = $bdd->prepare('SELECT * FROM type_commercant WHERE type=:old'); 
       $request->execute(array(':old' => $old)); 
       while($row = $request->fetch()) 
       { 
        $bdd1 = new PDO("mysql:dbname=maruecondi_db;host=localhost","root",""); 
        $request1 = $bdd1->prepare('UPDATE commercant SET type_id=:type_id WHERE id=:id'); 
        $request1->execute(array(':type_id' => $row['id'],':id' => $id)); 
       } 
      } 

Я получаю переменные из Ajax запроса (Jquery) и я инициализировать их раньше, я избежать вам код. Другие запросы на страницу работают. У меня в настоящее время нет способа узнать, получилось ли что-то неправильно, из-за вызова ajax. (Нет php orange boxes/pdo message) Я попытался решить проблемы, и я обнаружил, что мы идем в if. Я удалил первый запрос, который содержит время, я заменил $ row ['id'] на значение, и я работал. С самого начала я продолжаю копировать и вставлять соединение с моей базой данных, поэтому никаких проблем.

Так моя проблема здесь:

   $request = $bdd->prepare('SELECT * FROM type_commercant WHERE type=:old'); 
       $request->execute(array(':old' => $old)); 
       while($row = $request->fetch()) 

Я не понимаю, что я сделал неправильно ...

$request = $bdd->prepare('SELECT * FROM type_commercant'); 
       $request->execute(); 
       while($row = $request->fetch()) 

Это работает, поэтому я попытался это:

    $request = $bdd->prepare('SELECT * FROM type_commercant'); 
       $request->execute(); 
       while($row = $request->fetch()) 
       { 
        if($row['type'] == $old) 
        { 
         $request1 = $bdd->prepare('UPDATE commercant SET type_id=:type_id WHERE id=:id'); 
         $request1->execute(array(':type_id' => $row['id'],':id' => $id)); 
        } 

       } 

Мы не входим в условие if ($ row ['type'] == $ old), но я удаляю это условие, и когда я заменяю что-то вроде этого:

while($row = $request->fetch()) 
       { 
         $request1 = $bdd->prepare('UPDATE commercant SET adresse=:type_id WHERE id=:id'); 
         $request1->execute(array(':type_id' => $row['id'],':id' => $id)); 
       } 

Он работает ... я проверил $ ​​строки [ 'типа'], $ строки [ 'ID'], $ старый в массиве (': type_id' => $ строки [ 'ID'], все переменная получила строку. Так в чем проблема? Спасибо заранее!

+0

'$ old' установлен и когда вы выполняете запрос по записи БД, возвращаются? – chris85

+0

Yup $ old установлен в моем php-файле и в моей базе – hardworker

+0

Почему вы продолжаете подключаться к PDO? Вам нужно только подключиться ** ONCE **. соединение внутри цикла - это смехотворная трата ресурсов. –

ответ

-1

Хмм, как сказать, что ...

я обновление данных со старыми данными я объясниться:

$bdd = new PDO("mysql:dbname=maruecondi_db;host=localhost","root",""); 
      $request = $bdd->prepare('SELECT id FROM type_commercant WHERE type=:old'); 
      $request->execute(array(':old' => $old)); 

получал старый идентификатор из type_commercant, и я делал это :

$request1 = $bdd1->prepare('UPDATE commercant SET type_id=:type_id WHERE id=:id'); 
       $request1->execute(array(':type_id' => $row['id'],':id' => $id)); 

Таким образом, я заменил старый идентификатор ... старым идентификатором.

Извините за эту ошибку, все равно спасибо за чтение меня и пытается таким образом решить эту проблему: D

-1

Try вызвать PDO::exec() для выполнения UPDATE или DELETE.

$bdd = new PDO("mysql:dbname=maruecondi_db;host=localhost","root",""); 

if($champ == "type_id")  
{ 
    $stmt = $bdd->prepare('SELECT * FROM type_commercant WHERE type=:old'); 
    $stmt->execute(array(':old' => $old)); 
    $rows = $stmt->fetchAll(); 
    // Uncomment this to know what you get 
    // var_dump($rows); 
    foreach ($rows as $row) { 
     $bdd->exec(
      "UPDATE commercant 
       SET type_id = " . $bdd->quote($row['id']) . 
      " WHERE id = " . $bdd->quote($id) 
     ); 
    } 
} 

Вы можете использовать этот код для отладки.

var_dump($bdd->errorInfo()); 
Смежные вопросы