Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP postgresql查询内具有内爆的PHP数组无法正确转换_Php_Postgresql - Fatal编程技术网

PHP postgresql查询内具有内爆的PHP数组无法正确转换

PHP postgresql查询内具有内爆的PHP数组无法正确转换,php,postgresql,Php,Postgresql,我有一个数组,当使用适当的语法内爆时,它的格式是正确的。也就是说,它在PGAdmin中测试完美。但是,当我尝试在查询中显示并使用变量时,它正在更改字符。这是我的密码: 从HTML表单发布: $media= $_POST["userMedia"]; 内爆: $media_names = "'".implode( "%','", $media)."%'"; 转储$media\u名称: string(25) "'COMM_7029%','COMM_7030%'" $media\u名称在查询错误中

我有一个数组,当使用适当的语法内爆时,它的格式是正确的。也就是说,它在PGAdmin中测试完美。但是,当我尝试在查询中显示并使用变量时,它正在更改字符。这是我的密码:

从HTML表单发布:

$media= $_POST["userMedia"];
内爆:

$media_names = "'".implode( "%','", $media)."%'";
转储$media\u名称:

string(25) "'COMM_7029%','COMM_7030%'"
$media\u名称在查询错误中的外观:

 m.name LIKE any (array[''COMM_7029%','COMM_7030%''])
我试图从内爆中删除第一个“'”,但这是结果字符串转储:

string(24) "COMM_7029%','COMM_7030%'" 
代码的其余部分:

从中选择发布数据的用户表单:

<select multiple name="userMedia" class="form-control" id="userMedia[]" style="height:350px;">
<?php
$conn = pg_connect("dblogin");

if (!$conn) {
echo "Did not connect.\n";
exit;
}
$sql = "SELECT medias.name FROM public.medias where medias.startdate >  '2015-01-01'";
$rs = pg_query($conn, $sql);


if (pg_num_rows($rs) > 0) {
// output data of each row
while($row = pg_fetch_assoc($rs)) {
$menu .= "<option value=".$row['name'].">" . $row['name']. "</option>";
}
}

echo $menu;

pg_close($conn); 

?> 
</select>

用于数据库查询的PHP:

$datea= $_POST["userDatea"];
$media= $_POST["userMedia"];
$datez= $_POST["userDatez"];
$media_names = "'".implode( "%','", $media)."%'";


var_dump($media_names);

 if( !empty($_SERVER['REQUEST_METHOD']) && (strcasecmp($_SERVER['REQUEST_METHOD'], 'post')===0)  ) {
// Create connection
$conn = pg_connect("dbconnect");

// Check connection
if (!$conn) {
echo "Did not connect.\n";
exit;
}
$result = pg_query($conn,
"SELECT
date (b.starttime),
Count(b.starttime) as Plays,
Count(distinct(b.playerid)) as Stores

FROM
public.billing b,
public.medias m,
public.players p

WHERE
b.mediaitemid = m.id and
p.id = b.playerid and
m.name LIKE any (array['$media_names']) and
b.starttime >= date('$datea') and 
b.starttime < date('$datez')+1 and
m.startdate >  '2015-01-01'

GROUP BY
date (b.starttime)

ORDER BY
date (b.starttime);");

if (!$result) {
echo "Query failed.\n";
exit;
}
$datea=$\u POST[“userDatea”];
$media=$\u POST[“userMedia”];
$datez=$_POST[“userDatez”];
$media_names=“””。内爆(“%”,“,$media)。“%”;
变量转储(媒体名称);
如果(!empty($服务器['REQUEST\u方法])&&($服务器['REQUEST\u方法],'post')==0)){
//创建连接
$conn=pg_connect(“dbconnect”);
//检查连接
如果(!$conn){
echo“未连接。\n”;
出口
}
$result=pg_查询($conn,
“选择
日期(b.开始时间),
将(b.starttime)计算为戏剧,
将(不同的(b.playerid))计数为存储
从…起
公共服务,
公共媒体,
公共体育
哪里
b、 mediaitemid=m.id和
p、 id=b.playerid和
m、 名称与任何(数组['$media_names'])和
b、 开始时间>=日期(“$datea”)和
b、 开始时间<日期(“$datez”)+1和
m、 开始日期>'2015-01-01'
分组
日期(b.开始时间)
订购人
日期(b.开始时间);”;
如果(!$result){
echo“查询失败。\n”;
出口
}

我删除了查询中$media\u name周围的单引号,它按预期返回了数据

更改自:

m.name LIKE any (array['$media_names'])
为此:

m.name LIKE any (array[$media_names])

您能否显示实际运行的代码,以便我们进行故障排除?