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();

【问题讨论】:

它是否显示任何错误? 是的。 phpmysql 刚刚停止工作。没有人知道为什么。 您应该打开 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中出错)

mysql批量更新出错

在 Eclipse 中使用 UPDATE - SET - WHERE 方法更新 MySQL 数据库时出错

windows xp下的MySQL出错

SQL查询更多时间执行并最终出错[关闭]

修改mysql中root出错导致mysql数据库消失解决方法