2013-11-24 5 views
0

Привет, ребята, я пытаюсь обновить флажок feild в моей базе данных и должен захватывать и связывать значения с использованием SQL PDO.Array to string conversion PHP показывает ошибку

я получаю сообщение об ошибке, однако о массиве для преобразования строки,

моих флажков выглядеть -

<div class="checkboxFour"> 


<p class="admin_label" id="checklabel2">In Seaon</p> 
       <input type="checkbox" name="inSeason[]" value="1" id="checkboxFourInput" checked="checked"<?php if(isset($_GET['inSeason'])){ ?> checked="checked" <?php } ?>/> 
       <label for="checkboxFourInput"></label> 
      </div> 

      <div class="checkboxFour"> 
       <p class= "admin_label"id="checklabel2">Out Season</p> 
       <input type="checkbox" name="inSeason[]" value="0" id="checkboxFour2Input" <?php if(isset($_GET['inSeason'])){ ?> checked="checked" <?php } ?> /> 
       <label for="checkboxFour2Input"></label> 
      </div> 

В моем PHP я построил следующее -

if (isset($_POST['updateProductSubmit'])) { 
// open the database connection 
include 'includes/connection.php'; 


$inSeasonValue = "0"; 
if(array_key_exists('inSeason', $_GET) && $_GET['inSeason'] == '0'){ 
    $saleItemValue = "0"; 
    echo $saleItemValue['inSeason']; 
} 

$inSeasonValue = "1"; 
if(array_key_exists('inSeason', $_GET) && $_GET['inSeason'] == '1'){ 
    $saleItemValue = "1"; 
    echo $saleItemValue['inSeason']; 
} 


try { 
//create our sql update statement 
$sql = "UPDATE Products SET productNbr = :productNbr, productName= :productName, inSeason = '$inSeasonValue', description = :description, photo = 
:photo WHERE productNbr=:productNbr;"; 

// prepare the statement 
$statement = $pdo->prepare($sql); 

// bind the values 

    $statement->bindValue(':productNbr', $_POST['productNbr']); 
    $statement->bindValue(':productName', $_POST['productName']); 
    $statement->bindValue(':inSeason', $_POST['inSeason']); 
    $statement->bindValue(':description', $_POST['description']); 
    $statement->bindValue(':photo', $_POST['photo']); 


// execute the statement 
$success = $statement->execute(); 
} // end try 

catch (PDOException $e) { 
echo 'Error updating item: ' . $e->getMessage(); 
exit(); 
} // end catch 

// test the result and display appropriate message 
if ($success) { 

echo '<script type="text/javascript"> alert("Successfully updated Item.")</script>'; 
} 
else { 
echo '<script type="text/javascript">alert("Unable to execute the Item update.");</script>'; 
} 
//free connection to the server 
$statement->closeCursor(); 
} // end if statement 
?> 

Ошибка указывает на то, что значение привязки $statement->bindValue(':inSeason', $_POST['inSeason']);

Надеюсь, вы, ребята, можете помочь!

Спасибо, большое спасибо!

:-)

+0

Использование квадратных консольно-имя-суффикс обозначения, то есть 'имя = "inSeason []"' заставляет PHP интерпретировать значение данных POST, как массив, следовательно массив преобразовать строку – Phil

ответ

0

Вы назвали ваш inSeason checkox с массивом построить здесь

<input type="checkbox" name="inSeason[]" value="0" id="checkboxFour2Input" <?php if(isset($_GET['inSeason'])){ ?> checked="checked" <?php } ?> /> 

Это будет выглядеть как массив, когда PHP декодирует е $ _GET данных, но здесь

if(array_key_exists('inSeason', $_GET) && $_GET['inSeason'] == '0'){ 

Вы тестируете строку, поэтому сообщение об ошибке «массив-sring».

Просто переименовать CheckBox в вашем HTML, как это:

<input type="checkbox" name="inSeason" value="0" id="checkboxFour2Input" <?php if(isset($_GET['inSeason'])){ ?> checked="checked" <?php } ?> /> 
            ^^^ remove square brackets here. 
+0

спасибо столько майка, что избавился от моей ошибки ok :-) вы можете увидеть что-то не так с тем, как я вставляю значение в SQL-заявление? или привязывая значение, все обновляет строку inSeason col. – ActionDan