Я пытаюсь вставить вывод print_r в базу данных?
В базе данных результат равен 1
?
Как решить эту проблему?
<?php processLog(print_r($dataArray)); function processLog($text) { global $process, $db, $groupID; print($text . "\n"); $SQL = "INSERT INTO enable_log (process_id, process_date, group_id, log_output, log_time) VALUES(:process_id, :process_date, :group_id, :log_output, now())"; $q = $db->prepare($SQL); $q->bindValue(":process_id", $process['pid']); $q->bindValue(":process_date", $process['date']); $q->bindValue(":group_id", $groupID); $q->bindValue(":log_output", $text); $q->execute(); } ?>
Вместо сохранения вывода print_r()
(который вы можете сделать с ответом @xzyfer), я бы предложил использовать serialize()
чтобы PHP мог перевернуть строку обратно в правильный массив, если вам когда-либо понадобится вытащить ее обратно базы данных.
processLog(serialize($dataArray));
Передайте true как второй параметр print_r:
$a = print_r($var, true);
Сохраняет вывод print_r($var)
в $ a;
В вашем примере:
$q->bindValue(":log_output", print_r($text, true));
Если вы передадите возвращаемый параметр print_r, вы можете использовать результат, а не распечатывать
$result = print_r($text, true);
$ result теперь будет содержать то, что было бы ранее выведено.
См. Руководство здесь