chalkbox 2020-03-01 19:18 采纳率: 0%
浏览 306

php接受axios传过来的数组,join分隔后添加进数据库,只有数字才可以添加成功,而中文不行,求解决

前台数据获得的是数组,我将数组分隔成字符串添加到mysql数据库中只能添加数字
如果数据是中文或字母就添加不进去,编码格式是Utf8
这是前端代码片

onSubmit(formName) {
      this.$refs[formName].validate(async valid => {
        if (valid) {
          alert('提交成功!')
          const res = await this.$http.post('php/tj.php', {
            t1: this.form.domains
          })
          console.log(res)
          console.log(this.form.domains)
        } else {
          console.log('提交失败!')
          return false
        }
      })
    }

这是php文件,$sql插入数字可以,但中文不行.英文也不行


<?php
header("Content-type:text/html;charset=utf-8");
//接收数据,JSON格式转换
$data = json_decode(file_get_contents("php://input"), TRUE);
// 这里的t1是个数组,里面含有数组对象
$t = $data['t1'];
// 将数组对象中的value取出赋予新数组
foreach ($t as $key => $v) {
    $arr[] = $v['value'];
}
// 按逗号开始分隔,将数据一一分隔
$name = join(',', $arr);
// 链接数据库
include 'mysql.php';
// 插入数据,第一个空值是ID自增,$name是分隔数组后的多个数据
$sql = "insert into t1 values('', '$name')";
// 执行sql语句
$res = mysqli_query($conn, $sql);
// echo $t;
echo json_encode($arr);
echo $name;
?>

这是前端页面

这是数据库数据
这是数据库数据

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 03:03
    关注

    根据你提供的信息,问题可能是由于在字符串插入到数据库时没有进行正确的转义,导致中文和英文字符被解释为特殊符号,进而影响了插入操作。

    解决方案是在插入字符串前进行正确的转义,可以使用PHP内置的mysqli_real_escape_string函数进行转义。修改下面的代码:

    将:

    $name = join(',', $arr);
    

    修改为:

    $arr_escaped = array();
    foreach ($arr as $key => $value) {
         array_push($arr_escaped, mysqli_real_escape_string($conn, $value));
    }
    $name = join(',', $arr_escaped);
    

    这样就能正确的将中文和英文字符插入到数据库中了。

    评论

报告相同问题?

悬赏问题

  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并