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

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 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形