Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试更改它以便系统获取日期。不从用户处获取日期_Php_Sql Server_Pdo - Fatal编程技术网

Php 尝试更改它以便系统获取日期。不从用户处获取日期

Php 尝试更改它以便系统获取日期。不从用户处获取日期,php,sql-server,pdo,Php,Sql Server,Pdo,当用户更新表单时,我试图获取当前日期时遇到问题。我想做的是不发布用户键入的日期。我想让系统知道日期。如何使update_process.php页面获得当前日期。在$u POST[date]bindparam部分。我尝试在其中添加getdate(),但没有效果。我不知道怎么做 <?php $serverName = "localhost"; try { $db= new PDO( "sqlsrv:server=$serverName ; Database=s

当用户更新表单时,我试图获取当前日期时遇到问题。我想做的是不发布用户键入的日期。我想让系统知道日期。如何使update_process.php页面获得当前日期。在$u POST[date]bindparam部分。我尝试在其中添加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'];
    }
?>


正如我在评论中所说,我不确定
$\u POST['date']
的角色是什么,那么你为什么要使用它呢?从您的问题来看,似乎您只想要当前日期,而不是用户输入。在这种情况下,您不需要绑定参数,只需将date函数放入查询中。

要解决我的问题,我必须删除set 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();

除了修复$stmt->execute()的try-catch外,它是否打印出任何错误或异常?检查“requests”表上的类型,查看需要发送到那里的数据类型。检查另一个问题的日期时间格式。SQL Server和PHP,嗯?这不是我经常看到的组合。不管怎样,使用
$\u POST['date']
有什么意义?为什么不使用MySQL的
NOW()
函数并将列设置为
DATETIME
name=:name,date=NOW()
并删除绑定。@是的,我的try-catch有问题如何解决这是一个由两部分组成的问题:“我如何更改计数以反映有多少Bob注册了今天的日期。”-可能是OP没有响应,或者出去给我们大家吃午饭的原因;)是的,他在吃午饭sorry@Veronica是其他原因造成的。您发布的代码少于29行。要么是一个括号太多,要么是一个缺少。很抱歉,这是另一个项目的错误代码,但在这一个项目中,在stmt->execute()@Veronica之后,我的catch出现了一个错误。很高兴听到这个消息。你可以发布你自己的答案。斯塔克让你去。非常欢迎你,维罗妮卡。很高兴看到解决方案出现,干杯
   $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();