【问题标题】:How to fix Array to string conversion error如何修复数组到字符串的转换错误
【发布时间】:2023-04-07 06:28:02
【问题描述】:

我在我的 html 选择表单上使用多项选择,目的是在一次销售中插入两个 id。

我收到此错误:

Notice: Array to string conversion in C:\xampp\htdocs\allprojects\projects\Colégios\users\teacher\addscore.php on line 33
insert into cursosprogramas (departamento, codigocurso, diurno, contacto, pos_laboral, contacto2, proc_por) values ('100', '120','Array', '88839', '7', '5353','2')Query failed.

代码:

<select type=text name=diurno[] value="<?php echo $name; ?>" multiple size=2><br>

    <?php
    $sql = "select * from professore1 where coordenacao='$coordenacao' order by coordenacao;";

    for ($i= 0; $i < pg_numrows($res);$i++) {
        $name = pg_fetch_result ($res, $i, "name");
        $numero = pg_fetch_result ($res, $i, "numero");
        echo "<option value = '$numero'>$name</option>";
    }
    ?>

</select>

<?php
$idd=$_SESSION['jpgwapo'];
$id=$_POST['id'];
$grdid=$_POST['grdid'];
$diurno=$_POST['diurno'];   
$contacto=$_POST['contacto'];
$pos_laboral=$_POST['pos_laboral'];
$contacto2=$_POST['contacto2'];

$con = @pg_connect ("port=5432 host=localhost dbname=postgres user=postgres password=a");

$sql = "insert into cursosprogramas (departamento, codigocurso, diurno, contacto, pos_laboral, contacto2, proc_por) values ('$id', '$grdid','$diurno',
 '$contacto', '$pos_laboral', '$contacto2','$idd')";
$res = @pg_query ($con, $sql);
if ($res == NULL){
    echo "Query failed.";
    exit (0);
}   
?>

到目前为止,我已经尝试过一些示例,但我仍然不明白它是如何工作的。

【问题讨论】:

  • 答案就在错误提示中:values ('100', '120','Array',...不知怎么$diurno是一个数组,你试着把它当成字符串来用。
  • 谢谢@Michal,我该如何解决?
  • 我无法回答这个问题,因为我不知道$_POST['diurno']; 中有什么内容尝试var_dump($_POST) 看看是否有问题。
  • “目的是在一次销售中插入两个 id” - 你的意思是,你想把两个值放在一条记录的一列中,用逗号分隔?然后,您需要先将数组内容转换为该格式,例如使用 implode。 (安全问题和违反适当规范化的问题,暂且不提。)
  • 是的@CBroe 想法是将两个数据或 ID 存储在一个单元格中

标签: php arrays postgresql


【解决方案1】:
$diurno=isset($_POST['diurno']) ? (array) $_POST['diurno'] : '';
if (is_array($diurno)) {
    $diurno = implode('|', $diurno);
}

试试这个代码。我认为会正常工作。 您收到该错误是因为您尝试保存到数据库,但此值是数组,您无法将其保存到数据库。 您有两个选项可以使用唯一分隔符来分解值,然后将 $select 保存到数据库中,或者将数组转换为 json 并将其保存到数据库中,然后您就可以使用数据了。

【讨论】:

  • 谢谢@plamen Penchev。它给出:解析错误:语法错误,意外'$_POST'(T_VARIABLE),期待
  • 在哪里?可能缺少分号
  • @Plamen Penchev 先生,错误出在此处:$diurno=isset($_POST['diurno']) ?数组 $_POST['diurno'] : '';
  • 把“数组”放在括号中 $diurno=isset($_POST['diurno']) ? (数组) $_POST['diurno'] : '';
  • @Plamen Penchev 先生我还有另一个错误,但不在代码上。我对 SQL Shell 上的错误进行了故障排除,它说整数的输入语法无效:“6|3”。我必须更改我的数据库吗?
猜你喜欢
  • 1970-01-01
  • 2021-10-12
  • 2021-07-15
  • 1970-01-01
  • 2015-02-26
  • 2012-07-15
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多