【问题标题】:Prepared statement generates rows of notices in www-error.log [closed]准备好的语句在 www-error.log 中生成通知行 [关闭]
【发布时间】:2021-12-30 08:47:47
【问题描述】:

我已经浏览了这个网站和整个互联网以寻找答案,但我没有找到任何与我的情况有关的东西。

我有一个文本区域,我通过对 addNote.php 的 ajax 调用保存它,每次我添加新注释时,它都会在 /var/log/php-fpm/www-error.log 中生成一个条目与以下...

PHP 注意:在第 16 行的 /var/www/html/site/edit/ajax/addNote.php 中,只能通过引用传递变量

这是我的 PHP 文件中的第 10 到 17 行...

$uniqueid = $_POST['uniqid'];
$customerid = $_POST['customerid'];
$note = $_POST['note'];
$creationDate = date('Y-m-d H:i:s');

$conn = new mysqli("localhost", "user", "pass", "database");
$stmt = $conn->prepare("insert into notes set uniqid=?, customerid=?, note=?, created=?");
$stmt->bind_param("ssss", $uniqueid, $customerid, $note, $creationDate);

我有一种下沉的感觉,这是一件很愚蠢的事情,但如果有人能指出我的错误,我肯定很乐意消除这些通知。

谢谢!

【问题讨论】:

  • 这两行代码是正确的。你能展示你如何定义4个变量吗?请记住,bind_param 通过引用(而不是通过复制)获取变量
  • @Timmy 谢谢。我已经用请求的代码行编辑了我的问题。
  • 您使用的是什么版本的 PHP?如果您将查询分配给一个变量,然后将该变量传递给prepare(),这有什么不同吗?
  • 如果您的 creationDate 始终只是当前日期/时间,为什么不在您的表格中将其设置为默认值,并将其完全排除在查询之外?
  • @droopsnoot 我正在使用 PHP 7.4.27,是的,你是对的,我可以让它添加当前日期和时间。我还在学习!

标签: php mysqli


【解决方案1】:

dropsnoot 为我指明了正确的方向。我取出了 creationDate 并让 MySQL 添加了当前日期和时间。不管什么原因,这解决了这个问题。 www-error.log 中不再有通知!

非常感谢!

【讨论】:

  • 我知道这为您解决了问题,但对于将来寻求帮助的人来说,这会产生误导。错误消息必须来自另一段代码,您可能在编辑文件时无意中修复了错误。 Mysqli 对日期没有任何问题,它们作为任何常规字符串作为文本传输。
猜你喜欢
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 2020-03-15
  • 1970-01-01
  • 2014-04-17
相关资源
最近更新 更多