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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘