php - 将var_export保存到MySql数据库

标签 php mysql

我有一个 php 脚本,它在服务器上执行命令,例如:

exec('sudo unoconv -f pdf '.$file, $output, $return);

然后我检查脚本是否成功执行:

if(!$return) { Do something here } else{ $errormsg = var_export($output, true); }

错误消息可能类似于以下内容:

array ( 0 => 'Error: /invalidfileaccess in pdf_process_Encrypt', 1 => 'Operand stack:', 2 => '', 3 => 'Execution stack:', 4 => ' %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1910 1 3 %oparray_pop 1909 1 3 %oparray_pop 1893 1 3 %oparray_pop --nostringval-- --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push', 5 => 'Dictionary stack:', 6 => ' --dict:1162/1684(ro)(G)-- --dict:1/20(G)-- --dict:82/200(L)-- --dict:82/200(L)-- --dict:109/127(ro)(G)-- --dict:291/300(ro)(G)-- --dict:20/31(L)--', 7 => 'Current allocation mode is local', )

然后我尝试将错误消息存储到我的 MySql 数据库中:

mysqli_query($con, "INSERT INTO incidents (operation, date, error) VALUES ('convert', '$date', '$errormsg')");

error的数据类型为VARCHAR(),当我执行上述查询时,如果我从上述命令中删除$errormsg,则不会将任何内容插入数据库中数据已成功插入数据库。我应该为该列使用哪种数据类型以便插入错误消息?

最佳答案

该方法似乎返回一个字符串。这段代码

<?php

$var = ['test' => 'ja'];
$result = var_export($var, true);
echo gettype($result);

打印“字符串”以输出。据我了解,此方法返回有效的 PHP 代码作为字符串。

我猜想,问题与此函数无关,而是与 SQL 查询或用于存储信息的代码有关。

更新:我看到您发布了更新。问题是,您既没有转义字符串,也没有使用准备好的语句。我建议您使用准备好的语句而不是字符串插值。这也与安全问题有关。

参见 mysqli_real_escape_string 甚至更好的 mysqli_prepare

关于php - 将var_export保存到MySql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50357686/

相关文章:

php - Xdebug 未加载

mysql - SQL 语句 Prestashop

MySQL QUERY 在本地主机上运行,​​但不在服务器上运行

mysql - 多人多组SQL

mysql - 如何引用更新语句的 "set"部分中正在更新的表?

php - 插入表白色结果

php - 在 Yii2 中取消设置 session 变量时遇到问题

mysql - 从主 id 中选择相关 id 和映射值

php - 如何将数据复制到另一个表并避免键冲突?

php - 如何访问 apache 中的唯一 ID?