首页| 版块| 我的| 发帖| 消息
主题:关于帖子阅读页显示的ip地址来源(SQL 语句)
zhangjingyu 
以为把“$db -> update("UPDATE pw_ipdatabase set uid='$winduid',name='$windid',tid='$tid',timestamp='$timestamp',date='$date',onlineip='$onlineip',ipfrom='$str5'");”括号里面的“update”改为“insert into”就能解决问题。结果,忙了一个多小时,却提示这行代码错误:“Fatal error: Call to a member function update() on a non-object in D:\phpStudy\PHPTutorial\WWW\require\common.php on line 2609”

最后,向deepseek提问,才恍然大悟,还是语法不对!

这个错误是因为 update() 方法通常用于执行 UPDATE 语句,而你传入的是一个 INSERT 语句。

根据你的代码,应该使用 insert() 或 query() 方法:

解决方案:

使用 insert() 方法(推荐):

php
$db -> insert("INSERT INTO pw_ipdatabase SET uid='$winduid',name='$windid',tid='$tid',timestamp='$timestamp',date='$date',onlineip='$onlineip',ipfrom='$str5'");
使用 query() 方法:

php
$db -> query("INSERT INTO pw_ipdatabase SET uid='$winduid',name='$windid',tid='$tid',timestamp='$timestamp',date='$date',onlineip='$onlineip',ipfrom='$str5'");
如果确实需要 UPDATE,改为正确的 UPDATE 语法:

php
$db -> update("UPDATE pw_ipdatabase SET uid='$winduid',name='$windid',tid='$tid',timestamp='$timestamp',date='$date',onlineip='$onlineip',ipfrom='$str5' WHERE 条件");
另外注意安全风险:
你的代码存在 SQL 注入漏洞,建议使用参数化查询或转义函数:

php
$uid = intval($winduid); // 假设是数字
$name = $db->escape($windid);
// ... 对其他变量也做相应处理
$db -> insert("INSERT INTO pw_ipdatabase SET uid='$uid',name='$name',...");
请根据你的实际需求(插入新记录还是更新现有记录)选择合适的解决方案。
zhangjingyu回帖于2026-04-19 14:39[查看电脑版]
下一楼»:过程是这样的:最近一直在用联想笔记本调试论坛,也一直用得好好的,今天连续三次尝试都没有开机 ..
«上一楼:刚刚想到更新数据表的语句似乎不对,不是更新,而应该是插入。前面的报错信息中所有字段的数据都 ..

查看全部回帖(200)
«返回主帖