我被一个简单的 php 搞了 2 天,马上崩溃

2016-07-29 09:24:24 +08:00
 alittletrain

有一条 pdo 的 insert into 语句,拿出来放到 mysql 执行就 OK ,放到 php 里就不行,求可能的原因。。。

7124 次点击
所在节点    PHP
50 条回复
alittletrain
2016-07-29 11:00:49 +08:00
@tojoevan 替换成 1 可以插入
alittletrain
2016-07-29 11:01:13 +08:00
@jarlyyn 没办法 不让用 orm
nullp
2016-07-29 11:05:07 +08:00
之前遇到过这样的问题。不过是用 php 连的 mssql 打印出来的 sql 语句直接可以执行,在 php 就是不执行。 是包含汉字的字符集编码的问题 。 不过按道理 mysql 和 php 的话都是 utf-8 应该不会有这样的问题, 你可以看下
jarlyyn
2016-07-29 11:11:46 +08:00
@alittletrain

没说用 orm 啊

用 pdo 或者其他的绑定参数的库啊……
iyaozhen
2016-07-29 11:19:02 +08:00
应该是 url 那个值的问题, exec 方法有返回值的呀,判断一下呗,然后打印一下 SQL 和 error 。

还有用了 PDO 没用参数绑定?
rESHARP
2016-07-29 11:19:10 +08:00
MYSQL 可以给表名、列名加引号? 在 MSSQL 里不行
npc0der
2016-07-29 11:22:02 +08:00
长度超了么 替换某一个超长的字符串 逐渐减少长度试试
realpg
2016-07-29 11:31:59 +08:00
@alittletrain 把所有字段替换成 1 ,然后一个一个改回正常值 看看哪个字段报错呗
而且 PDO 的 execute 有返回值有错误打印 干吗不用
yao978318542
2016-07-29 11:35:07 +08:00
这个问题貌似我遇到过 你用的什么框架 exec 这个方法是 php 本身的那个 还是你自定义的? 估计是 exec 出问题了
Mac
2016-07-29 12:03:07 +08:00
@rESHARP 那不是引号,那是转义符,键盘 1 边上那个,用来规避 MYSQL 本身的保留字。
bugsnail
2016-07-29 12:06:29 +08:00
把 SQL 语句放到数据库执行一下, 加一句:
show warnings;
SQL 语句;

看有没有警告,

如果没有, 那最大可能是那个 url
kookxiang
2016-07-29 12:34:02 +08:00
这是 PDO 一个超级坑爹的地方……

加上
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
然后你应该就知道哪里有问题了
JulyXing
2016-07-29 14:02:26 +08:00
pdo 默认会把 单引号转义变成 \' ,所以会出现在 php 中执行没有结果,但是单独在 mysql 中有效。这个问题前段时间也遇到过,可以去看 mysql 日志就可以看到实际执行语句。
void1900
2016-07-29 14:05:41 +08:00
没错误提示? 长度问题吧 我猜
void1900
2016-07-29 14:05:53 +08:00
@void1900 或者字段类型没对上,看错误
aprikyblue
2016-07-29 14:20:03 +08:00
用 pdo 干嘛还拼接。。
alittletrain
2016-07-29 14:31:09 +08:00
@iyaozhen exec 返回 false
alittletrain
2016-07-29 14:31:32 +08:00
@void1900 长度没问题 字段类型没问题 手动 mysql insert OK
vangogogo
2016-07-29 14:44:07 +08:00
@Mac 呵呵
macroideal
2016-07-29 14:48:39 +08:00
报什么错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/295677

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX