2017-11-22 3 views
0

Ich habe ein Formular, das Array Werte an create_parts.php übergeben, dann versuche ich, diese Werte an die Teile-Klasse übergeben in die Datenbank einfügen. An diesem Punkt bin ich gerade verloren ... Das Formular übergibt an create_parts.php, ich kann die Ergebnisse der Array-Echo. In meiner Klasse kann ich jedoch keine Werte bekommen, meine Einfügung in die Datenbank ist nur eine Reihe von NULL.Wie bekomme ich Werte aus einem Array innerhalb einer Klasse

<?php 
include_once '../config/database.php'; 
include_once '../objects/parts_object.php'; 

$database = new Database(); 
$db = $database->getConnection(); 

$parts= new parts($db); 

    $parts->est_part_idArr=$_POST['est_part_id']; 
    $parts->part_qtyArr=$_POST['part_qty']; 
    $parts->part_numArr=$_POST['part_num']; 
    $parts->part_discArr=$_POST['part_disc']; 
    $parts->part_costArr=$_POST['part_cost']; 

$parts->create(); 

Ich bin in der Lage, die Ergebnisse hier, um das Echo und

{"est_part_idArr":["123","124"],"part_qtyArr":["4","6"],"part_numArr": 
["2334","3344"],"part_discArr":["part","parts"],"part_costArr":["56","33"] 

und Echo dem $ stmt

{"queryString":"INSERT INTO \r\n partsT\r\n SET \r\n est_part_id=:est_part_id, part_qty=:part_qty, part_num=:part_num, part_disc=:part_disc, part_cost=:part_cost"}

jedoch in part_object.php bekommen kann ich nicht bekommen alles zum arbeiten. Ich kann es in die Datenbank einfügen, aber es ist alles NULL.

class parts{ 

private $conn; 
private $table_name = "partsT"; 

public $est_part_idArr; 
public $part_qtyArr; 
public $part_numArr; 
public $part_discArr; 
public $part_costArr; 

public function __construct($db){ 
$this->conn = $db; } 

function create(){ 

    $query = "INSERT INTO 
       " . $this->table_name . " 
      SET 
       est_part_id=:est_part_id, part_qty=:part_qty, part_num=:part_num, part_disc=:part_disc, part_cost=:part_cost"; 

    $stmt = $this->conn->prepare($query); 

if(!empty($this->$est_part_idArr)){ 
    for ($i = 0; $i < count($this->$est_part_idArr); $i++) { 
     if(!empty($this->$est_part_idArr[$i])){ 
      $est_part_id = $this->$est_part_idArr[$i]; 
      $part_qty = $this->$part_qtyArr[$i]; 
      $part_num = $this->$part_numArr[$i]; 
      $part_disc = $this->$part_discArr[$i]; 
      $part_cost = $this->$part_costArr[$i]; 
     $stmt->execute(array(
     ':est_part_id' => $est_part_id, 
     ':part_qty'  => $part_qty, 
     ':part_num'  => $part_num, 
     ':part_disc' => $part_disc, 
     ':part_cost' => $part_cost)); 

     } 
    } 
} 

    $this->est_part_idArr=htmlspecialchars(strip_tags($this->est_part_idArr)); 
    $this->part_qtyArr=htmlspecialchars(strip_tags($this->part_qtyArr)); 
    $this->part_numArr=htmlspecialchars(strip_tags($this->part_numArr)); 
    $this->part_discArr=htmlspecialchars(strip_tags($this->part_discArr)); 
    $this->part_costArr=htmlspecialchars(strip_tags($this->part_costArr)); 


    $stmt->bindParam(":est_part_id", $this->est_part_idArr[0]); 
    $stmt->bindParam(":part_qty", $this->part_qtyArr[0]); 
    $stmt->bindParam(":part_num", $this->part_numArr[0]); 
    $stmt->bindParam(":part_disc", $this->part_discArr[0]); 
    $stmt->bindParam(":part_cost", $this->part_costArr[0]); 

if($stmt->execute()){ 
     return true; 

    }else{ 
     return false; 
    } 
     } 

An diesem Punkt weiß ich

public $est_part_idArr; 
public $part_qtyArr; 
public $part_numArr; 
public $part_discArr; 
public $part_costArr; 

falsch ist, ich kann nicht etwas zu arbeiten, gerade erhalten.

+0

den Code aktualisiert auf den Vorschlägen zu reflektieren. Ich habe jede mögliche Permutation ausprobiert und trotzdem NULL bekommen. – user3516366

Antwort

0

Ihnen fehlen einige $this vor Ihren Variablen, um auf Ihre öffentlichen Klassenmitglieder zuzugreifen. Lassen Sie uns diese Linie zum Beispiel nehmen:

$est_part_id = $est_part_idArr[$i]; 

die meiner Meinung nach sollte wie folgt aussehen:

$est_part_id = $this->est_part_idArr[$i]; 

Auf der anderen Seite, wenn Sie Ihre Parameter ein paar Zeilen nach unten den Code binden sind Sie etwas mit dies wie:

$stmt->bindParam(":est_part_id", $this->est_part_id); 

Was ich sollte

$stmt->bindParam(":est_part_id", $this->est_part_idArr); 
sein glauben

oder

$stmt->bindParam(":est_part_id", $this->est_part_idArr[0]); 
+0

Vielen Dank das führte mich zur Lösung. Sehr geschätzt! – user3516366

Verwandte Themen