使用PDO从SQLite表删除数据的PHP代码无法正常运行
解决PHP PDO删除SQLite数据时rowCount返回0的问题
我来帮你排查这个问题,你遇到的情况确实有点奇怪——命令行能正常执行删除,但PHP PDO里rowCount()返回0,大概率是代码里的细节没处理好,给你几个具体的排查和解决方向:
先确认变量
$OutputID的实际值
有时候我们以为变量是1,但实际可能是字符串"1"、空值或者其他错误值。可以在绑定参数前加一句var_dump($OutputID);,看看输出是不是int(1),确保变量值完全符合预期。开启PDO错误模式,捕获潜在异常
PDO默认是静默错误模式,就算执行出错也不会主动提示,这会让我们错过关键信息。在初始化PDO之后添加这行代码,开启异常模式:$myPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);这样如果执行过程中有语法错误、权限问题或者其他异常,会直接抛出错误信息,帮你快速定位问题。
尝试用
bindValue()代替bindParam()bindParam()是绑定变量的引用,虽然你指定了PDO::PARAM_INT,但某些情况下可能因为变量类型的隐性转换导致问题。换成bindValue()试试,它是直接绑定值:$stmt->bindValue(':OutputID', $OutputID, PDO::PARAM_INT);硬编码参数测试,排除变量绑定问题
暂时把SQL语句里的参数换成固定值,比如:$stmt = $myPDO->prepare("DELETE FROM Output WHERE ID = 1"); $stmt->execute(); echo $stmt->rowCount();如果这样
rowCount()返回1,说明问题出在变量绑定环节;如果还是返回0,那就要再确认表名、字段名是否和数据库里的完全一致(比如有没有大小写差异,SQLite在部分系统下对大小写敏感)。
内容的提问来源于stack exchange,提问作者Sangeetha M
相关产品推荐
相关产品推荐

