将var_export保存到MySql数据库

时间:2018-05-15 19:16:49

标签: 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,则数据已成功插入到数据库中数据库。我应该为列使用哪种数据类型,以便插入错误消息?

1 个答案:

答案 0 :(得分:1)

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

<?php

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

输出“string”。据我所知,此方法将有效的PHP代码作为字符串返回。

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

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

请参阅mysqli_real_escape_string或更好的mysqli_prepare