2010-10-26 4 views
1

Что может вызвать это? Код следующим образом:Почему PHP mysqli подготовил оператор, но вставляя все значения NULL?

$m = new mysqli($host,$user,$pass,$db); 
if(mysqli_connect_errno()) die('Connect failed: ' . mysqli_connect_error()); 
$PrepSQL = "INSERT INTO Products (" . implode(',',$this->cols) . ") VALUES ("; 
$PrepSQL .= '?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
$stmt = $m->prepare($PrepSQL); 
if(!$stmt) die('Could not prepare: ' . $m->error . "\n$PrepSQL\n"); 
$ret = $stmt->bind_param('isissssddssssssssssssssssssssssssisssssss', 
     $contents[0], ... bunch of these here ...); 
if(!$ret) die('bind_param failed: ' . $m->error); 

Затем в цикле у меня есть:

$contents = explode('|',$NL); // NL is pipe delimited data 
print_r($contents); 
if(!$stmt->execute()) die("Statement failed: " . $m->error); 

И сценарий не останавливается, но каждое значение равно нулю в MySQL. Большинство типов - это строки, и я бы предположил, что они, по крайней мере, заполнятся, даже если числовые типы ошибочны. Значения print_r правильно печатаются.

+3

Линия 4 заканчивается неправильным символом кавычки. – Phil

+0

Это была опечатка после пасты, когда я пытался форматировать. – Tim

+0

Вы уверены, что '$ this-> cols' содержит правильные имена столбцов? – kijin

ответ

0

Можете ли вы показать полный код при подготовке заявления к его выполнению?

Я подозреваю, что $ contents в первой части не совпадает с $ содержимым, как во второй части. Они должны быть ссылками на один и тот же массив, поскольку вы заполняете его после привязки к нему по ссылке.

+0

Я думаю, что ты прав. Мои навыки PHP очень позади. Выполнение задания снова, вероятно, делало что-то еще. – Tim

Смежные вопросы