2013-07-15 2 views
-1

При попытке вставить данные в таблицу mysql с использованием PDO, я получаю следующую ошибку.PDO query: SQLSTATE [42000]

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 '' at line 1' in /home/gaz492/public_html/dayz/user/pages/admin/vip.php:26 Stack trace: #0 /home/gaz492/public_html/dayz/user/pages/admin/vip.php(26): PDO->query('INSERT INTO `cu...') #1 /home/gaz492/public_html/dayz/user/index.php(89): include_once('/home/gaz492/pu...') #2 {main} thrown in /home/gaz492/public_html/dayz/user/pages/admin/vip.php on line 26

Вот код на этой странице.

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

<?php 
/** 
* Created by JetBrains PhpStorm. 
* User: Gareth 
* Date: 14/07/13 
* Time: 19:01 
* To change this template use File | Settings | File Templates. 
*/ 
ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 
$news = ""; 

if ($loggedin === false) { echo "Please log in to access the admin panel."; include_once("login.php"); } 
else { 

    $uid = $_SESSION['adminid']; 

    if(isset($_REQUEST['addPackageBtn'])) { 
     $packageName = $_POST['inputName']; 
     $packageInventory = $_POST['inputInventory']; 
     $packageBackpack = $_POST['inputBackpack']; 
     $packageSkin = $_POST['inputSkin']; 

     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     //$dbh->query("INSERT INTO `cust_loadout`(`inventory`, `backpack`, `model`, `description`) VALUES ('". $packageInventory ."','". $packageBackpack ."','". $packageSkin ."','". $packageName . "'"); 
     $dbh->query("INSERT INTO `cust_loadout` (`inventory`, `backpack`, `model`, `description`) VALUES ([],[],[],[]"); 
    } 

    ?> 
    <h1>Manage VIP's</h1> 

    <table class="table table-striped table-bordered span8"> 
     <thead> 
     <tr> 
      <th>Delete</th> 
      <th>Unique ID</th> 
      <th>Package</th> 
     </tr> 
     </thead> 
     <tbody> 
     <?php 
     foreach ($dbh->query("SELECT * FROM cust_loadout_profile") AS $vip) { 

     echo "<tr>"; 
     echo "<td>Delete</td>"; 
     echo "<td>".$vip["unique_id"]."</td>"; 
     echo "<td>".$vip["cust_loadout_id"]."</td>"; 
     echo "</tr>"; 


     } 
    ?> 
     </tbody> 
    </table> 

    <table class="table table-striped table-bordered span3"> 
     <thead> 
     <tr> 
      <th>Manage VIP's</th> 
     </tr> 
     </thead> 
     <tbody> 
     <tr> 
      <td> 
       <a href="#addVIP" role="button" data-toggle="modal" class="btn btn-primary"><i class="icon-white icon-plus-sign"></i> Add VIP</a> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <a href="#addPackage" role="button" data-toggle="modal" class="btn btn-primary"><i class="icon-white icon-plus-sign"></i> Add VIP Package</a> 
      </td> 
     </tr> 
     </tbody> 
    </table> 

    <table class="table table-striped table-bordered span8"> 
     <thead> 
     <tr> 
      <th>Delete</th> 
      <th>Name</th> 
      <th>Inventory</th> 
      <th>Backpack</th> 
      <th>Skin</th> 
     </tr> 
     </thead> 
     <tbody> 
     <?php 
     foreach ($dbh->query("SELECT * FROM cust_loadout") AS $vip) { 

      echo "<tr>"; 
      echo "<td>Delete</td>"; 
      echo "<td>".$vip["description"]."</td>"; 
      echo "<td>".$vip["inventory"]."</td>"; 
      echo "<td>".$vip["backpack"]."</td>"; 
      echo "<td>".$vip["model"]."</td>"; 
      echo "</tr>"; 


     } 
     ?> 
     </tbody> 
    </table> 

    <!-- Add VIP Modal --> 
    <div id="addVIP" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="addVIPLabel" aria-hidden="true"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> 
      <h3 id="addVIPLabel">Add VIP</h3> 
     </div> 
     <div class="modal-body"> 
      <form class="form-horizontal"> 
       <div class="control-group"> 
        <label class="control-label" for="inputUniqueID">Unique ID</label> 
        <div class="controls"> 
         <input type="text" id="inputUniqueID" placeholder="Unique ID"> 
        </div> 
       </div> 
       <div class="control-group"> 
        <label class="control-label" for="inputPackage">Package</label> 
        <div class="controls"> 
         <input type="text" id="inputPackage" placeholder="Package"> 
        </div> 
       </div> 
       <div class="control-group"> 
        <div class="controls"> 
        </div> 
       </div> 

     </div> 
     <div class="modal-footer"> 
      <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> 
      <button type="submit" class="btn btn-primary">Save changes</button> 
      </form> 
     </div> 
    </div> 

    <!-- Add VIP Package Modal --> 
    <div id="addPackage" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="addPackagePLabel" aria-hidden="true"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> 
      <h3 id="addPackageLabel">Add VIP Package</h3> 
     </div> 
     <div class="modal-body"> 
      <form class="form-horizontal" acion="./?p=admin/vip" method="post"> 
       <div class="control-group"> 
        <label class="control-label" for="inputName">Name</label> 
        <div class="controls"> 
         <input type="text" id="inputName" name="inputName" placeholder="Name"> 
        </div> 
       </div> 
       <div class="control-group"> 
        <label class="control-label" for="inputInventory">Inventory</label> 
        <div class="controls"> 
         <input type="text" id="inputInventory" name="inputInventory" placeholder="Inventory"> 
        </div> 
       </div> 
       <div class="control-group"> 
        <label class="control-label" for="inputBackpack">Backpack</label> 
        <div class="controls"> 
         <input type="text" id="inputBackpack" name="inputBackpack" placeholder="Backpack"> 
        </div> 
       </div> 
       <div class="control-group"> 
        <label class="control-label" for="inputSkin">Skin</label> 
        <div class="controls"> 
         <input type="text" id="inputSkin" name="inputSkin" placeholder="Skin"> 
        </div> 
       </div> 
       <p>Click <a href="./pages/loadoutS/loadout.php" onclick="window.open(this.href, 'mywin', 
'left=20,top=20,width=726px,height=481,toolbar=1,resizable=0'); return false;" >here</a> to generate a inventory string</p> 

     </div> 
     <div class="modal-footer"> 
      <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> 
      <button type="submit" name="addPackageBtn" class="btn btn-primary">Save changes</button> 
      </form> 
     </div> 
    </div> 
<?php 
} 

?> 
+5

Что вы хотите достичь с помощью '([], [], [], []") '? – hjpotter92

+0

что [], [], [], []? – Callombert

+0

и связать ваши ценности отдельно как показано в ответе гончара. – Callombert

ответ

0

Изменить

//$dbh->query("INSERT INTO `cust_loadout`(`inventory`, `backpack`, `model`, `description`) VALUES ('". $packageInventory ."','". $packageBackpack ."','". $packageSkin ."','". $packageName . "'"); 
    $dbh->query("INSERT INTO `cust_loadout` (`inventory`, `backpack`, `model`, `description`) VALUES ([],[],[],[]"); 
} 

в

$stm = $dbh->prepare("INSERT INTO `cust_loadout`(`inventory`, `backpack`, `model`, `description`) VALUES (?, ?, ?, ?)"); 
    $stm->execute(array($packageInventory, $packageBackpack, $packageSkin, $packageName)) 
} 
0

У вас не хватает закрывающей скобкой VALUES набора. Ваш SQL строка, отформатированный для пробелов, в настоящее время является:

INSERT INTO `cust_loadout` 
    (`inventory`, `backpack`, `model`, `description`) 
VALUES 
    ([],[],[],[] 
      --^note that closing parenthesis is missing 

То есть, я действительно не знаю, что вы собираетесь для [] делать. Если они должны быть анонимными заполнители для параметрических значений, PDO использует ? характер ... но вместо того, чтобы использовать query(), вам необходимо:

  1. prepare() Заявлении; а затем

  2. либо bind the parameters и вызвать execute() без аргументов, или вызовите execute() с массивом параметризованных аргументов.

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