EDIT: Итак, я посмотрел инструкции PDO Insert. Все еще путают. так что теперь мой код гласит:Попытка вставить php-объект в mysql Объект DateTime «ad_endDate»
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test14.php</title>
</head>
<?php
$servername = "server";
$username = "username";
$password = "password";
$dbname = "dbname";
//Setup for endDate value
date_default_timezone_set("America/Denver");
$startDate = new DateTime('12:00:00');
echo "<p>Today is: {$startDate->format('l Y-m-d g:i:s')}</p>";
// N gives a numeric day to the days of the week
// 2 means Tuesday
while ($startDate->format('N') != 2)
$startDate->modify('+1 days');
echo "<p>Start date is: {$startDate->format('l Y-m-d g:i:s')}</p>";
//Set endDate at Tuesday
$endDate = $startDate ->modify("+2 Weeks");
echo "<p>End date is: {$endDate->format('l Y/m/d g:i:s')}</p>";
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);
$sql = $conn->prepare("INSERT INTO wp_awpcp_ads (ad_enddate)
VALUES (:end_date)
");
$sql->bindParam(':end_date',strtotime($endDate), PDO::PARAM_STR);
// use exec() because no results are returned
$conn->exec($sql);
echo "New record created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
<body>
</body>
</html>
Я получаю 2 предупреждения:
Предупреждение: StrToTime() ожидает параметр 1, чтобы быть строкой, объект приведен в [site_url] /test14.php на линии 40
Предупреждение: PDO :: Exec() ожидает параметр 1, чтобы быть строкой, объект приведен в [site_url] /test14.php на линии 42
Новая запись успешно создана
и я все еще получаю все нули в своем столе. Имеет ли значение, если это таблица wordpress? У меня нет проблем с функциями now()
только DateTime()
функций. Есть ли другой способ настроить дату?
Я пытался найти способ, чтобы добавить значение пользовательских конечную дату в поле базы данных MySQL с типом «DateTime»
В частности, клиент хочет, чтобы все объявления, чтобы быть «закончился» на вторник в полдень после 2 недель активности. до сих пор я помогал в phphelp форумах и есть этот фрагмент кода:
<?php
$servername = "server";
$username = "username";
$password = "password";
$dbname = "dbname";
//Setup for endDate value
date_default_timezone_set("America/Denver");
$startDate = new DateTime('12:00:00');
echo "<p>Today is: {$startDate->format('l Y-m-d H:i:s')}</p>";
// N gives a numeric day to the days of the week
// 2 means Tuesday
while ($startDate->format('N') != 2)
$startDate->modify('+1 days');
echo "<p>Start date is: {$startDate->format('l Y-m-d H:i:s')}</p>";
//Set endDate at Tuesday
$endDate = $startDate ->modify("+2 Weeks");
echo "<p>End date is: {$endDate->format('l Y/m/d H:i:s')}</p>";
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);
$sql = "INSERT INTO wp_awpcp_ads
(
ad_contact_name,
ad_contact_email,
ad_contact_phone,
ad_title,
ad_category_id,
ad_item_price,
ad_details,
disabled,
disabled_date,
ad_postdate,
ad_startdate,
ad_last_updated,
ad_enddate
)
VALUES
(
'$_POST[name]',
'$_POST[email]',
'$_POST[phone]',
'$_POST[title]',
'$_POST[category]',
'$_POST[price]',
'$_POST[details]',
1,
now(),
now(),
now(),
now(),
$endDate->format('Y-m-d H:i:s'))";
// use exec() because no results are returned
$conn->exec($sql);
echo "New record created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
Это работает отлично, за исключением моей ad_enddate
подряд показывает 0000-00-00 00:00:00
и я в конце остроумия, чтобы решить эту проблему. Я изменил свой код на msqli на pdo, и ничего. Я совершенно новичок в php и нуждаюсь в этом на прошлой неделе.
Ваш код уязвим для [инъекции SQL] (https://en.wikipedia.org/wiki/SQL_injection). – Pang
да, это вопрос номер 2 после того, как я получу это решение. –
Просто используйте [подготовленные заявления] (https://phpdelusions.net/pdo#prepared), и ваша проблема №1 исчезнет сама по себе. –