Laravel中含单引号的请求数据无法保存的问题解决咨询
解决Laravel中保存含单引号内容时的报错问题
咱们先拆解下你遇到的问题,其实分两种场景,我一个个给你说清楚:
首先看你手动赋值的那行代码:
$data->name = 'Roq'ie;
这行代码本身就有PHP语法错误,不是Laravel的问题。因为PHP里用单引号包裹字符串时,字符串内部的单引号必须转义,不然PHP会把'Roq'当成一个完整的字符串,后面的ie就会被当成未定义的变量,直接触发语法报错。
解决这个语法问题有两种简单方法:
- 用反斜杠转义字符串里的单引号:
$data->name = 'Roq\'ie'; - 改用双引号包裹整个字符串,这样内部的单引号就不需要转义了:
$data->name = "Roq'ie";
然后再说说从请求获取值的场景:
$data->name = $request->name; $data->save();
这种情况完全不用操心单引号的问题,因为Laravel的Eloquent ORM会自动帮你处理SQL注入和特殊字符转义。只要用户输入的内容是Roq'ie,直接赋值保存就可以正常存入数据库,不会触发报错。
总结一下:
- 手动写字符串时,要遵守PHP的字符串语法规则,处理好内部的单引号
- 从请求或用户输入获取的值,Eloquent会自动处理转义,无需手动操作
内容的提问来源于stack exchange,提问作者Imam Ahmad Ashari
相关产品推荐
相关产品推荐

