Php语法帮助一个noobie

0 php

我正在使用noobie应用程序从数据库中提取一些日期,然后一年后发送警报(使用cron).到目前为止,我有点挣扎,我正在尝试制作一个能够完成我的数学工作的页面.

到目前为止,我已经整天调试并在教程后阅读教程,但仍然出现错误.很沮丧:)

我的代码看起来像这样....

<?php
$con = mysql_connect("localhost","root", "etc");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
  mysql_select_db("db", $con);

$result = mysql_query('SELECT CheckDate FROM Data') or exit(mysql_error());
while ($row = mysql_fetch_array($result))
{
extract($row);

$validfromdate = CheckDate;

$alert=strtotime("+1 year", $validfromdate);

echo $alert;

?>
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 5

以下是一些想法:

您不应该使用"root"帐户(或任何具有管理权限的帐户)连接到MySQL,除非需要它 - 在这里,它不是


另外:你可能不应该使用extract:它会立即创建变量 - 如果有一天你在表中添加一个列,它将意味着你的PHP脚本中的一个新变量,它可能与现有的变量冲突(这里风险不大,因为你没有做"选择*";但是,有一天或那一天,...)

  • 相反,使用语法 $row['CheckDate']
  • with extract,仍然CheckDate是一个变量,这意味着你必须用$前缀:$CheckDate

有关更多信息,请参见extract手册页:在示例中,每个变量前面都有$ - 实际上,这是PHP中变量的语法;-)


第三个:在脚本结尾处似乎缺少一些"}",以标记while循环的结束.


此外,还有一条路:在开发时,您应该使用尽可能高的错误报告级别; 这会在没有$的情况下向你表示"CheckDate"错误.

有关更多信息,您可以查看:

在脚本顶部使用类似的内容将有助于:

error_reporting(E_ALL);
ini_set('display_errors', 'On');
Run Code Online (Sandbox Code Playgroud)

或者,在php.ini文件中:

error_reporting = E_ALL
display_errors = On
Run Code Online (Sandbox Code Playgroud)

(您必须查找并替换现有值)


希望这会有所帮助......并且玩得开心!