2016-03-23 99 views
0

我用这个代码的工作:更新阵列PDO

$sortId = $_POST['sortId']; 
$sortName = $_POST['sortName']; 
$sortType = $_POST['sortType']; 
$location = $_POST['location']; 
$active = $_POST['active']; 

$sql = "UPDATE `sorts` SET `sort` = :sort 
WHERE `sort_id` = :sort_id"; 

$stmt = $db->prepare($sql); 
$stmt->bindParam(':sort', $sort); 
$stmt->bindParam(':sort_id', $sort_id); 

$db->beginTransaction(); 

foreach($sortName as $i => $sort) 
{ 
    $sort_id = $sortId[$i]; 
    $stmt->execute(); 
} 
$db->commit(); 

它的工作原理,它应该让我继续添加

<div class="chuteAudit"> 
     <div> 
      <input type="hidden" name="sortId[]" value="<?php echo $name['sort_id']; ?>" > 
      <input type="text" name="sortName[]" value="<?php echo $name['sort']; ?>" > 
      <select name="sortType[]" > 
            <optgroup label="<?php echo $name['shipping_sort'] ?>"> 
             <option value="amzl[]">AMZL</option> 
             <option value="other[]">Other</option> 
            </optgroup> 
     </select> 
      <select name="location[]" > 
            <option value=""><?php echo $name['section'] ?></option> 
            <option value="chutes">Chutes</option> 
            <option value="spine">Spine</option> 
            <option value="RMspine">Royal Mail spine</option> 
            <option value="RMchutes">Royal Mail chutes</option> 
            <option value="exceptions">Exceptions</option> 
            <option value="teamLift">Team lift</option> 
      </select> 
      <select name="active[]" > 
            <option value=""><?php echo $name['active'] ?></option> 
            <option value="yes">Yes</option> 
            <option value="no">No</option> 
      </select> 
     </div> 

     </div> 

我曾以为额外的价值

$sortId = $_POST['sortId']; 
    $sortName = $_POST['sortName']; 
    $sortType = $_POST['sortType']; 
    $location = $_POST['location']; 
    $active = $_POST['active']; 

    $sql = "UPDATE `sorts` SET `sort` = :sort, `shipping_sort` = :sortType 
    WHERE `sort_id` = :sort_id"; 

    $stmt = $db->prepare($sql); 
    $stmt->bindParam(':sort', $sort); 
    $stmt->bindParam(':sort_id', $sort_id); 
    $stmt->bindParam(':sortType', $sortType); 

    $db->beginTransaction(); 

    foreach($sortName as $i => $sort) 
    { 
     $sort_id = $sortId[$i]; 
     $stmt->execute(); 
    } 
    $db->commit(); 

HTML这会很好,因为它只是增加了一些已经可以工作的东西,但它并不像我原先想象的那么简单是,目前我收到了错误信息Notice: Array to string conversion我知道它与我添加的附加代码有关,但我不确定自己做错了什么。

回答

1

在您的表单中有sortType[]使您的$sortType为数组。

你的阵列这里绑定:

$stmt->bindParam(':sortType', $sortType); //$sortType is an array 

你所需要的结合更像是

$stmt->bindParam(':sortType', $sort_type); 

,然后添加到的foreach

foreach($sortName as $i => $sort) 
{ 
    $sort_id = $sortId[$i]; 
    $sort_type = $sortType[$i]; 
    $stmt->execute(); 
} 

类同您如何遍历sortId,遍历sortType

+0

当然啊,谢谢,我会接受答案,当它让我。 –