Почему подготовленный оператор PHP mysqli работает, но вставляет все значения NULL? - PullRequest
1 голос
/ 26 октября 2010

Что может вызвать это? Код следует:

$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 правильно печатает значения.

1 Ответ

0 голосов
/ 04 декабря 2010

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

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

...