PDO声明失败

时间:2013-01-13 00:13:00

标签: php mysql pdo

我试图让这个声明起作用,但我猜它必须有一个错误,因为它根本不会产生任何结果或错误。有经验和新鲜眼睛的人可以看看它是否有问题。代码如下:

$conn = new PDO('mysql:host=localhost;dbname=timecard', 'username', 'password');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare('UPDATE `timeRecords` SET `jobDescription`= :jobDescription, `equipType`= :equipType, `unitNumber`= :unitNumber, `unitHours`= :unitHours) 
                            WHERE `employeeID`= :employeeID AND `date`= :dateToday');

    $stmt->execute(array(':employeeID' => $_SESSION['employeeID'], ':dateToday' => $dateToday, ':jobDescription' => $jobDescription,
                         ':equipType' => $equipType, ':unitNumber' => $unitNumber, ':unitHours' => $unitHours));

2 个答案:

答案 0 :(得分:1)

在原始代码中发现错误我在发现) WHERE之前发现错误,这要归功于使用下面try/catch block更新和工作代码的建议:

try{
$conn = new PDO('mysql:host=localhost;dbname=timecard', 'username', 'password');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('UPDATE `timeRecords` SET `jobDescription`= :jobDescription, `equipType`= :equipType, `unitNumber`= :unitNumber, `unitHours`= :unitHours 
                        WHERE `employeeID`= :employeeID AND `date`= :dateToday');

$stmt->execute(array(':employeeID' => $_SESSION['employeeID'], ':dateToday' => $dateToday, ':jobDescription' => $jobDescription,
                     ':equipType' => $equipType, ':unitNumber' => $unitNumber, ':unitHours' => $unitHours));
} catch(PDOException $e){
    echo'ERROR: ' . $e->getMessage();
}

答案 1 :(得分:1)

很高兴您找到了try的解决方案。

我可能还会补充说,在为网站编码时添加标准错误报告非常有用。在处理脚本时,将其添加到顶部:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
?>

在您将网页设为现场之前将其删除。这使我免于数百次错误。

您甚至可以更进一步,为您的IP地址启用错误报告(假设您的IP是静态的)。保留IP允许/限制通常是一种不好的做法,因此在完成编辑后应将其删除。

//Change to match your IP address
if($_SERVER['REMOTE_ADDR']=="123.456.78.9"){
error_reporting(E_ALL);
ini_set('display_errors', 'On');
}