MySQL更新查询出错[关闭]
Posted
技术标签:
【中文标题】MySQL更新查询出错[关闭]【英文标题】:Error with MySQL update query [closed] 【发布时间】:2013-12-18 12:57:04 【问题描述】:我现在不知道为什么它不起作用。我也尝试过 Now() 的“整数”。
$update = 'UPDATE mitarbeiter SET lastlogin=? WHERE id=?';
$eintrag = $db->prepare( $update );
$eintrag->bind_param( 'si', NOW(), $id );
$eintrag->execute();
【问题讨论】:
它是否显示任何错误? 是的。 php 和 mysql 刚刚停止工作。没有人知道为什么。 您应该打开 php 错误并最好将 error_report 设置为 E_ALL,错误消息可以帮助您找到代码问题。 为什么这被投票为“过于宽泛”而关闭?有人在拼命寻找帽子还是什么? 我不明白为什么人们发布相同的答案?大多数只是@dystroy答案的克隆 【参考方案1】:NOW()
是一个 mysql 函数,而不是 PHP 函数。你可能会这样做
$update = 'UPDATE mitarbeiter SET lastlogin=NOW() WHERE id=?';
$eintrag = $db->prepare( $update );
$eintrag->bind_param( 'i', $id );
$eintrag->execute();
【讨论】:
【参考方案2】:now()
在 PHP 中不作为函数存在。
您可能禁用了 PHP 设置 display_errors
。如果您开启此设置,您会看到:
PHP Fatal error: Call to undefined function now()
NOW()
是 MySQL 中的一个函数,它在 PHP 中有一个等效的函数 date()
。
要么做:
$update = 'UPDATE mitarbeiter SET lastlogin=NOW() WHERE id=?';
$eintrag = $db->prepare( $update );
$eintrag->bind_param( 'i', $id );
$eintrag->execute();
或者:
$update = 'UPDATE mitarbeiter SET lastlogin=? WHERE id=?';
$eintrag = $db->prepare( $update );
$eintrag->bind_param( 'si', date("Y-m-d H:i:s"), $id );
$eintrag->execute();
【讨论】:
【参考方案3】:我总是对 bind_param 有问题,请改用 bindValue()。 但是即使我们说使用bind_param,它也应该是bindParam() 是吗?
$update = 'UPDATE mitarbeiter SET lastlogin=NOW() WHERE id=?';
$eintrag = $db->prepare( $update );
$eintrag->bindValue( 'i', $id );
$eintrag->execute();
【讨论】:
【参考方案4】:您的问题在 NOW()
功能部分失败。这是mysqls而不是phps。在 php 中执行此操作,示例如下:
$update = 'UPDATE mitarbeiter SET lastlogin=? WHERE id=?';
$eintrag = $db->prepare( $update );
$eintrag->bind_param( 'i', date("Y-m-d H:i:s"), $id );
$eintrag->execute();
【讨论】:
以上是关于MySQL更新查询出错[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
MySQL语法错误(查询在mysql中运行得很好但不知何故最终在jsp中出错)