2016-04-28 5 views
-1

Sorry Leute, ich meine mein echter Code ist das in meinem PC. Und hier akzeptiert kein PHP-Code, nur HTML, CSS und Java Script. Ich fügen Sie ihn, wie HTMLPDO importiert NULL Werte in MySql

ich einfach kopieren und einfügen von meinem Notizblock ++

Mein Code:

$conn = new PDO("mysql:host=localhost;dbname=fabio", "root", ""); 
 
    // set the PDO error mode to exception 
 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 

 
\t $filename = ($_FILES['arquivocsv2']["tmp_name"]); 
 
$abraArq = fopen($filename,"r"); 
 
$import = $conn->prepare("INSERT INTO relatorio (DocumentoSD,Descricao,CodCliente,Cliente,Regiao,DataDocumento,Material,Condicoes,Plano)VALUES (:DocumentoSD, :Descricao, :CodCliente, :Cliente, :Regiao, :DataDocumento, :Material, :Condicoes, :Plano)"); 
 

 
$import->bindParam(':DocumentoSD', $DocumentoSD,PDO::PARAM_STR); 
 
$import->bindParam(':Descricao', $Descricao,PDO::PARAM_STR); 
 
$import->bindParam(':CodCliente', $CodCliente,PDO::PARAM_STR); 
 
$import->bindParam(':Cliente', $Cliente,PDO::PARAM_STR); 
 
$import->bindParam(':Regiao', $Regiao,PDO::PARAM_STR); 
 
$import->bindParam(':DataDocumento', $DataDocumento,PDO::PARAM_STR); 
 
$import->bindParam(':Material', $Material,PDO::PARAM_STR); 
 
$import->bindParam(':Condicoes', $Condicoes,PDO::PARAM_STR); 
 
$import->bindParam(':Plano', $Plano,PDO::PARAM_STR); 
 

 
while (($items = fgetcsv($abraArq, 2048, ';')) !== FALSE) { 
 

 
$DocumentoSD = $items[0]; 
 
$Descricao = $items[4]; 
 
$CodCliente = $items[5]; 
 
$Cliente = $items[6]; 
 
$Regiao = $items[7]; 
 
$DataDocumento = $items[10]; 
 
$Material = $items[11]; 
 
$Condicoes = $items[17]; 
 
$Plano = $items[29]; 
 
\t \t \t // Execute prepared query 
 
$import->execute();}

+2

Nun, zuerst, '$ DocumentoD = $ items [];' fehlt ein Schlüssel. Zweitens sind Sie nach Wert gebunden, nicht durch Bezugnahme. Sie binden also einfach überall null, denn wenn Sie binden, haben diese Variablen keinen Wert. Sie möchten [bindParam] (http://php.net/manual/en/pdostatement.bindparam.php) anstelle von 'bindValue' verwenden. Bindungswert nimmt nur den aktuellen Wert und bindet diesen. Bind param, bindet einen Verweis auf diese Variable. Wenn sich der Wert ändert, ändert sich auch der Bind-Wert. –

+0

Ein bisschen vernünftige Code-Einrückung würde das Leben für uns alle einfacher machen – RiggsFolly

+0

Wo ist die nahe Option, die sagen "kompletter Haufen von Dudu" Ich schlage vor, dass Sie neu starten und [bootstrap von hier] (http://php.net/manual/ en/book.pdo.php) _seine sehr geheime Quelle, erzähl niemandem, dass ich dir davon erzählt habe_ – RiggsFolly

Antwort

1

Sie sind verbindlich nach Wert, nicht Bezug genommen wird. Sie binden also einfach überall null, denn wenn Sie binden, haben diese Variablen keinen Wert. Sie möchten bindParam anstelle von bindValue verwenden.

bindValue nimmt nur den aktuellen Wert und bindet das. Wenn Sie die Bindung ausführen, wurden diese Variablen nicht festgelegt, so dass ihr Wert null ist.

bindParam bindet ein Verweis auf diese Variable, wenn so der Wert ändert, so dass der Grenzwert der Fall ist.

+0

Siehe die Kommentare zu der Frage. Anscheinend ist das nicht der "echte Code" ... – Mike

+1

Du wirst es bereuen, dich mit dieser Sache beschäftigt zu haben, aber trotzdem viel Glück! – RiggsFolly

+0

Ich würde wetten, dass dies der echte Code ist, aber nur eine kleine Teilmenge eines viel größeren Codeblocks und sie wollten nur zeigen, was angemessen war, wie sie sollten. –