2016-04-28 2 views
-1

Извините, ребята, я имею в виду, что мой настоящий код - это на моем ПК. И здесь не принимается PHP-код, просто HTML, CSS и Java Script. Счетный как HTMLPDO импортирует значения NULL в MySql

Я просто скопировать и вставить из моего блокнота ++

Мой код:

$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

Ну, во-первых, '$ DocumentoSD = $ items [];' отсутствует ключ. Во-вторых, вы привязываетесь по значению, а не по ссылке. Таким образом, вы просто привязываете нуль везде, потому что, когда вы связываете, эти переменные не имеют значения. Вы хотите использовать [bindParam] (http://php.net/manual/en/pdostatement.bindparam.php) вместо 'bindValue'. Значение привязки просто принимает текущее значение и связывает его. Bind param, привязывает ссылку к этой переменной, поэтому, когда значение изменяется, также значение привязки. –

+0

Немного разумного отступка кода облегчит жизнь для всех нас – RiggsFolly

+0

Где ближайший вариант, который говорит «полная куча dudu», я предлагаю вам перезагрузиться и [загрузиться отсюда] (http://php.net/manual/ ru/book.pdo.php) _ит очень секретный ресурс, не рассказывай никому, о котором я тебе говорил_ – RiggsFolly

ответ

1

Вы связывающим по значению, а не по ссылке. Таким образом, вы просто привязываете нуль везде, потому что, когда вы связываете, эти переменные не имеют значения. Вы хотите использовать bindParam вместо bindValue.

bindValue только принимает текущее значение и связывает его. Когда вы выполняете привязку, эти переменные не установлены, поэтому их значение равно null.

bindParam, привязывает ссылку к этой переменной, поэтому, когда значение изменяется, также имеет значение границы.

+0

См. Комментарии к вопросу. По-видимому, это не «реальный код» ... – Mike

+1

Вы можете пожаловаться на участие в этом, но удачи в любом случае! – RiggsFolly

+0

Я был бы готов поспорить, что это настоящий код, но только небольшое подмножество гораздо большего блока кода, и они хотели показать только то, что было уместно, как и должно быть. –