当value是日期变量时,如何更新mysql数据库中的列

时间:2015-02-20 13:51:29

标签: php mysql

我在更新专栏parseDate时遇到了问题。

我使用PHP来更新列值,但总是失败。

我尝试在MySQL中直接使用查询,这是有效的。

值为$parseDateText

我试过

$parseDateText = '`'.$parseDateText.'`' ;

$parseDateText = '"'.$parseDateText.'"' ;

$parseDateText = "\"".$parseDateText."\"";

$parseDateText = "\'".$parseDateText."\'";

但所有$parseDateText都显示错误消息:SQLSTATE[42000]: Syntax error or access violation: 1064.

查询为$sql1,请帮助我。

顺便说一句,“parseDate”列是VARCHAR(30),无论我更新文本是什么都应该没问题。

<?php
$parseDateText = date ("Y-m-d");
$parseDateText = mysql_real_escape_string ($parseDateText);
$parseDateText = str_replace('"', "", $parseDateText);
$parseDateText = '`'.$parseDateText.'`' ;

// $test = printf "%s, $parseDateText";

$servername = "localhost";
$username   = "username";
$password   = "password";
$dbname     = "dbname";

try {
    $conn = new PDO(
        "mysql:host=$servername;dbname=$dbname", $username, $password
    );

    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql1 = "UPDATE TABLE 2015_02_20 SET parseDate = $parseDateText";

    $conn->exec($sql1);
    echo "New record created successfully";
    sleep (1);
}
catch(PDOException $e)
{
    echo $sql . "<br>" . $e->getMessage();
}

$conn = null;
?>

3 个答案:

答案 0 :(得分:1)

删除这些行:

$parseDateText = str_replace('"', "", $parseDateText);
$parseDateText = '`'.$parseDateText.'`' ;

并尝试:

$sql1 = "UPDATE TABLE 2015_02_20 SET parseDate ='". $parseDateText ."'";

答案 1 :(得分:1)

我会准备声明,而不是附加声明。

试试这个:

<?php

$parseDateText = date("Y-m-d");

$parseDateText = mysql_real_escape_string($parseDateText);
$parseDateText = str_replace('"', "", $parseDateText);
$parseDateText = '`' . $parseDateText . '`';

// $test = printf "%s, $parseDateText";

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql1 = "UPDATE TABLE 2015_02_20 SET parseDate = ?";

    $conn->prepare($sql1, array($parseDateText));

    $conn->exec($sql1);
    echo "New record created successfully";
    sleep(1);

} catch (PDOException $e) {
    echo $sql . "<br>" . $e->getMessage();
}

$conn = null;
?> 

准备语句然后执行:

$sql1 = "UPDATE TABLE 2015_02_20 SET parseDate = ?";

$conn->prepare($sql1, array($parseDateText));

$conn->exec($sql1);

答案 2 :(得分:0)

这个SQL看起来很奇怪:

UPDATE TABLE 2015_02_20 SET parseDate = $parseDateText

MySQL中UPDATE的SQL语法是UPDATE <table name> SET ...

因此,如果您的表格名称为MyTable,则应使用:

UPDATE MyTable SET parseDate = '$parseDateText'

$parseDateText变量本身不需要引号,即它应该像2015-02-02而不是"2015-02-20"等。