我已经把头靠在墙上几天了,因为所有的迹象都表明这应该起作用,所以我显然错过了一些简单的事情。
首先我使用一个函数来获取一组用户提交的注释
SELECT
o.id,
a.name,
(SELECT array_to_string(array_agg(sku), ',') AS Skus
FROM products p
INNER JOIN line_items li
ON li.product_id = p.id
WHERE li.order_id = o.id
) AS Skus
FROM orders o
INNER JOIN addresses a
ON a.id = o.address_id
然后,在通过id处理每个公园的foreach循环内部,我正在使用数据:
function get_id_comment_info($id) {
global $connection;
$pdo = new PDO('mysql:host='.DB_SERVER.'; dbname='.DB_NAME, DB_USER, DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');
$sql = "SELECT parks.parkid, parks.state, pcomment.parkid, pcomment.comment, pcomment.logname
FROM parks
LEFT JOIN pcomment
ON parks.parkid=pcomment.parkid
WHERE parks.id = '$id'";
$result = $pdo->query($sql);
$cominfo = $result->fetchAll();
return $cominfo;
}
$ cleancom的输出是:
数组([0] =>数组([parkid] => 462 [0] => 462 [状态] => KS [1] => KS [2] => 462 [评论] =>我注意到其他一些人说不要 浪费你的时间,但我认为没关系。是的,它比大多数都要小,但是 如果你是狂热的骑手,那将会很有趣。 [3] =>我注意到了 这里的其他人说不要浪费你的时间,但我认为没关系。是, 它比大多数都小,但如果你是一个狂热的人,那就很有趣 骑士。 [logname] => John32070 [4] => John32070))
它不会删除'。如果我使用preg_replace,则输出只是空白。我错过了一些简单的东西,但我无法看到它!
答案 0 :(得分:1)
我测试了str_replace()
函数,得到了以下结果:
$myArray = array("h'i", array("hi'hi", "yo"));
print_r($myArray);
//RESULT: Array ( [0] => h'i [1] => Array ( [0] => hi'hi [1] => yo ) )
应用过滤器后:
$filtered = str_replace( "'", "", $myArray);
print_r($filtered );
//RESULT: Array ( [0] => hi [1] => Array ( [0] => hi'hi [1] => yo ) )
之前的结果显示顶部数组中的任何字符串值确实正在被转换(h'i
转换为hi
),而任何形成多维数组的一部分值(数组中的任何数组) )hi'hi
不是一样的。这似乎是创建功能的方式。
一个解决方案是:
$cleancom = [];
foreach ($comments as $key => $value)
{
$cleancom[$key] = str_replace( "'", "", $value );
}
之前代码的工作原因是因为str_replace()
永远不会应用于多维数组,而在之前的代码中则是如此。如果您在另一个数组中的数组中有类似数组的内容,那么前面的代码将无效,所以如果将来最终出现这种情况,我建议您尝试使用回调函数找到解决方案。
如果这对您有用,请告诉我。
答案 1 :(得分:0)
想要说些别的话,你应该把id放在一个数组中,然后使用MySQL in()
函数,它只需要执行一次,而你的方法会多次执行。