插入带有准备好的语句的日期时间[重复]
Posted
技术标签:
【中文标题】插入带有准备好的语句的日期时间[重复]【英文标题】:Insert a datetime with prepared statement [duplicate] 【发布时间】:2012-07-08 22:38:08 【问题描述】:我正在尝试使用准备好的语句为库应用程序插入日期时间。这是到目前为止的代码:
global $dbh;
$query = "INSERT INTO `loan` SET
`title` = (?), //example value - Lord of the Rings
`description` = (?), //example value - Trilogy
`start_date` = (?), //example value 20120701 in String datatype
`end_date` = (?)"; //example value 20120702 in String datatype
$statement = $dbh->prepare($query);
$statement->bind_param("ssss", $title,$description,$startDate,$endDate);
$statement->execute();
print $statement->error; //to check errors
$statement->close();
但是,我似乎无法将此值插入该行。同时,不知何故
print $statement->error
似乎没有显示任何错误。
任何帮助都可以。
更新:
它确实有效。我只是引用了错误的数据库。但我想为偶然发现这一点的新人添加一点结尾。
删除 cmets/answers 中提到的所有 cmets,因为它们会弄乱您的字符串。
对于 DATETIME,请记住将数据类型指定为 String,因为 mysql 仅识别 String 数据类型。如果您没有使用准备好的查询,这意味着您必须为值添加 '' 引号。
由于未指定时间,插入将导致日期 (2012-07-01 00:00:00) 格式。
两个 SQL 查询都有效。 INSERT INTO tbl_name SET col_name = value 或 INSERT INTO tbl_name(col_name) VALUES (value) 工作。
【问题讨论】:
嘿,nickb,我尝试使用此查询INSERT INTO loan SET title = 'Lord of the Rings', description = 'Trilogy', start_date = '20120715', end_date = '20120720'
直接插入此表,它可以工作
我希望//example value
cmets 在您的实际代码中不存在,因为//
在mysql 中不是有效注释。
嘿 lanz,不,示例值不是我的代码的一部分。仅出于理解目的将它们插入此代码中。您可以考虑没有任何 cmets 的代码。
【参考方案1】:
试试这样的:
global $dbh;
$query = "INSERT INTO loan (title, description, start_date, end_date) VALUES (?,?,?,?)"
$statement = $dbh->prepare($query);
$statement->bind_param("ssss", $title,$description,$startDate,$endDate);
$statement->execute();
print $statement->error; //to check errors
$statement->close();
【讨论】:
我也试过把sql语句改成这个配置,还是不行。【参考方案2】:假设您的日期表单输入是一个名为“日期”的类型输入,这就是您要做的。在php类型中
$date = $_POST['date']
$query = "INSERT INTO `loan` SET
`title` = (?),
`description` = (?),
`start_date` = ".$date. //Insert variable here
"`end_date` = (?)";
我知道在单一类型的输入中插入日期不是一个好习惯,但我只是为了简单起见才使用这个示例。你可以找出自己的正确方法。
【讨论】:
嘿 redelman431,我实际上必须插入一个特定的日期,由表单输入收集。因此,mktime()
可能不是我真正需要的。
这是一个新的例子。这是你要找的吗?
要使其成为 YYYYMMDD 格式,您所要做的就是放置三个类型输入,在每个输入中设置字符限制,然后将它们连接到一个变量中。
引入 SQL 注入攻击的可能性不是一个好主意。此外,插入的语法是否有效?以上是关于插入带有准备好的语句的日期时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章