【问题标题】:Trying to change it so that the system gets the date. Not to get the date from the user尝试更改它以便系统获取日期。不从用户那里获取日期
【发布时间】:2014-11-25 18:51:13
【问题描述】:

我有一个问题,我试图在用户更新表单时获取当前日期。我想要做的是而不是发布用户在日期输入的内容。我希望系统获取日期。如何使 update_process.php 页面获取当前日期。在 $_POST[date] 绑定参数部分。我尝试在其中添加 getdate() 但这不起作用。我不知道该怎么做。

<?php
    $serverName = "localhost";

    try {
        $db= new PDO( "sqlsrv:server=$serverName ; Database=systems_requests", "test", "test");
        $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    } catch(Exception $e) {
        die( print_r( $e->getMessage() ) );
    }

    $sql = 'UPDATE requests SET id=:id, studentId= :studentId, name= :name, date= :date WHERE id= :id';
    $stmt = $db->prepare($sql);
    $stmt->bindParam(':id', $_POST['id'], PDO::PARAM_INT);
    $stmt->bindParam(':studentId', $_POST['studentId'], PDO::PARAM_STR);
    $stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR);
    $stmt->bindParam(':date', $_POST['date'], PDO::PARAM_STR);

    try {
        $stmt->execute();
    } catch(PDOException $exception) {
        echo "Error: " . $exception->getMessage();
    }
?>

我将如何更改计数以反映这一点,以计算有多少 Bob 在今天的日期注册。

<?php
    $stmt = $db->prepare("SELECT COUNT(*) AS rows_cnt FROM students WHERE  name='Bob' AND date=getdate()");
    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['rows_cnt'];
    }
?>

【问题讨论】:

  • 除了修复 $stmt->execute() 周围的 try catch 之外,它是否打印出任何错误或异常?
  • 检查您的“请求”表中的类型,看看您需要在那里发送什么样的数据。检查这个其他问题的日期时间格式。 stackoverflow.com/questions/8266651/…
  • SQL Server 和 PHP,嗯?这不是我经常看到的组合。无论如何,使用$_POST['date'] 有什么意义?
  • 为什么不直接使用 MySQL 的 NOW() 函数并将您的列设置为 DATETIMEname= :name, date= NOW() 并删除它的绑定。
  • @simply 害怕是的,我的 try catch 有问题我该如何解决这个问题

标签: php sql-server pdo


【解决方案1】:

为了解决我的问题,我必须删除设置 ID 才能使更新生效。

   $sql = 'UPDATE requests SET studentId= :studentId, name= :name, date=getdate() WHERE id= :id';
    $stmt = $db->prepare($sql);  
    $stmt->bindParam(':id', $_POST['id'], PDO::PARAM_INT);       
    $stmt->bindParam(':studentId', $_POST['studentId'], PDO::PARAM_STR);       
    $stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR); 
    $stmt->execute();

【讨论】:

  • 不客气,维罗妮卡。很高兴看到解决方案,干杯
【解决方案2】:
$sql = 'UPDATE requests SET id=:id, studentId= :studentId, name= :name, date=getdate() WHERE id= :id';
$stmt = $db->prepare($sql);  
$stmt->bindParam(':id', $_POST['id'], PDO::PARAM_INT);       
$stmt->bindParam(':studentId', $_POST['studentId'], PDO::PARAM_STR);       
$stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR); 
$stmt->execute();

就像我在cmets中所说的,我不确定$_POST['date']的作用是什么,那你为什么要使用它呢?从您的问题来看,您似乎只想要当前日期,而不是用户输入。在这种情况下,您不需要绑定参数,只需将日期函数放入查询中即可。

【讨论】:

  • 这是一个由两部分组成的问题:“我将如何更改计数以反映这一点,以计算有多少 Bob 在今天的日期注册。” - 可能是原因OP 没有回应,或者已经出去给我们吃午饭了;)
  • 是的,在午餐时很抱歉
  • @Veronica 是其他原因造成的。您发布的代码少于 29 行。要么一个大括号太多,要么一个缺失。
  • 对不起,错误代码用于另一个项目,但在这个项目中,我在 stmt->execute() 之后遇到了错误
  • @Veronica 太好了,很高兴听到这个消息。您可以发布自己知道的答案。 Stack 让你。
猜你喜欢
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多