2015-08-15 3 views
0

im running pdo query для обновления материала, который у меня есть в моей таблице, и он работал нормально, пока мне не пришлось добавить еще два значения, и im получать синтаксическую ошибку каждый раз, когда я выполняю, но когда Я удаляю эти два новых значения, это работает отлично.Нарушение синтаксиса mysql при добавлении дополнительных значений

это из формы с поста

<div class="form-group"> 
       <label for="hours">Hours:</label> 
       <input type="text" id="hours" name="hours" value="<?php echo $inventoryR['hours']; ?>" placeholder="hours"/> 
       </div> 

       <div class="form-group"> 
       <label for="condition">condition:</label> 
       <input type="text" id="condition" name="condition" value="<?php echo $inventoryR['condition']; ?>" placeholder="condition"/> 
       </div> 

это PHP

include "connect.php"; 

    $id = $_POST['machineId']; 
    $tags = $_POST['tags']; 
    $price = $_POST['price']; 
    $status = $_POST['status']; 
    $info = $_POST['info']; 
    $hours = $_POST['hours']; 
    $condition = $_POST['condition']; 

    $specl1 = $_POST['specl1']; 
    $specl2 = $_POST['specl2']; 
    $specl3 = $_POST['specl3']; 
    $specl4 = $_POST['specl4']; 
    $specl5 = $_POST['specl5']; 

    $spec1 = $_POST['spec1']; 
    $spec2 = $_POST['spec2']; 
    $spec3 = $_POST['spec3']; 
    $spec4 = $_POST['spec4']; 
    $spec5 = $_POST['spec5']; 

    $carousel = ""; 
    $featured = ""; 
    $rental = ""; 

    foreach($status as $s) 
    { 
     if ($s == "carousel") 
     { 
      $carousel = $s; 
     } 
     else if ($s == "featured") 
     { 
      $featured = $s; 
     } 
     else if($s == "rental") 
     { 
      $rental = $s; 
     } 

    } 

    $inventoryQ = $conn->prepare("UPDATE inventory SET tags=?, price=?, carousel=?, featured=?, rental=?, info=? WHERE id=?"); 

    //$query = $conn->prepare("UPDATE inventory SET hours=?, condition=? WHERE id=?"); 

    $inventoryQ->execute(array($tags, $price, $carousel, $featured, $rental, $info, $id)); 

    //$query->execute(array($hours, $condition, $id)); 

    $specsQ = $conn->prepare("INSERT INTO specs 
          (inventory_id, label1, spec1, label2, spec2, label3, spec3, label4, spec4, label5, spec5) 
          VALUES 
          (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
          ON DUPLICATE KEY UPDATE 
          label1 = VALUES(label1), 
          spec1 = VALUES(spec1), 
          label2 = VALUES(label2), 
          spec2 = VALUES(spec2), 
          label3 = VALUES(label3), 
          spec3 = VALUES(spec3), 
          label4 = VALUES(label4), 
          spec4 = VALUES(spec4), 
          label5 = VALUES(label5), 
          spec5 = VALUES(spec5)"); 
    $specsQ->execute(array($id, $specl1, $spec1, $specl2, $spec2, $specl3, $spec3, $specl4, $spec4, $specl5, $spec5)); 

и у меня есть часы и состояние как VARCHAR (250) в таблице.

Когда я пытаюсь выполнить что-либо с часами и условием, это не сработает. когда я прокомментирую их, как сейчас, он отлично работает с другими значениями.

Сообщение об ошибке:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition='used' WHERE id='65'' at line 1' in /home/mlerma1/public_html/admin/include/edit.php:52 Stack trace: #0 /home/mlerma1/public_html/admin/include/edit.php(52): PDOStatement->execute(Array) #1 {main} thrown in /home/mlerma1/public_html/admin/include/edit.php on line 52

я также попытался комментируя запрос в течение нескольких часов и состояния и просто вторя значение поста, чтобы увидеть, если его даже получить эти значения из формы, и это делает выходные эти значения.

ответ

1

Это потому, что CONDITION является резервным словом, и его нужно избегать с помощью backtiques, как показано ниже. См. MySQL Documentation

UPDATE inventory SET `hours`=?, `condition`=? WHERE id=?"; 
Смежные вопросы