2016-02-16 2 views
-1

Это относится к нескольким сообщениям (like this one), но я не могу понять, как это работает. Я пытаюсь вставить сразу несколько строк с помощью оператора sql. Вот мой код, что я нашел в предыдущих постах:Вставить много строк в MySQL с php-скриптом

$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 

if (mysqli_connect_error()) { 
    die('Connect Error (' . mysqli_connect_errno(). ') ' . mysqli_connect_error()); 
} 

$body = file_get_contents('php://input'); 
$jsonArray = json_decode($body, true); 

// Test 
$results = print_r($jsonArray, true); 
file_put_contents('filename.txt', print_r($results, true)); // write file to see formatting key/value 

$sql = array(); 
foreach ($jsonArray as $row) { 

    $sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')'; 

} 
$mysqli->query('INSERT INTO tbl_syncListLite (text, category) VALUES '.implode(',', $sql)); 

if ($mysqli === TRUE) { 
    $response = array('status' => '1'); 
} else { 
    $response = array('status' => '0'); 
} 

echo json_encode($response); 

$mysqli->close(); 

?> 

Я действительно не понимаю эту часть:

$sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')'; 

$mysqli->query('INSERT INTO tbl_syncListLite (text, category) VALUES '.implode(',', $sql)); 

... и особенно, если «текст» и «Идентификатор категории» относятся к конкретные слова или если я должен заменить их моими именами полей. Более того, я не понимаю, как он может управлять полями multiples, и если некоторые из них являются целыми числами, и поэтому одно (datetime, ...).

Если бы кто-нибудь мог мне помочь, это было бы очень признательно.

+1

это не работает с 'mysqli_' =>' mysql_real_escape_string', и вы должны были проверить реальную ошибку, почему вам не удалось http://php.net/manual/en/mysqli.error.php –

+1

возможный дубликат из [Можно ли смешивать API MySQL в PHP?] (http://stackoverflow.com/questions/17498216/can-i-mix-mysql-apis-in-php) –

+0

Спасибо, я посмотрю – Trichophyton

ответ

0

Значение текста и категории необходимо заменить на то, что вы хотите вставить в таблицу вместе с новой записью. Он может обрабатывать так много записей, потому что он принимает несколько значений (вложенный массив, разделенных запятыми), которые определены в начале функции Insert Into.

+0

Но я также пытаюсь с моими значениями: $ sql [] = '("'. $ row ['lastname']). '", "'. $ row ['firstname']. '")'; $ mysqli-> query ('INSERT INTO tbl_syncListLite (имя, фамилия) VALUES' .implode (',', $ sql)); но это тоже не работает ... Идея? Спасибо за помощь. – Trichophyton

+0

@Tricophyton. Ваша таблица называется tbl_syncListLite? –

+0

Да, это имя таблицы. Он отлично работает с $ sql = "INSERT INTO tbl_syncListLite (firstname, lastname, ...) VALUES ('$ firstname', $ 'lastname', ...)", а затем $ mysqli-> query ($ sql). Но не тогда, когда я заменяю эту новую порцию ... Я не могу понять, почему ... – Trichophyton

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