# Mysql – thesql_query expected

datetimeMySQL

currently I'm getting the error stated above using thise code:

$Tijd = date_create($_POST ["Tijd"]);
$Tijd->format(\DateTime::ISO8601);$result = mysql_query ("SELECT Voorstellingsnummer FROM voorstelling v WHERE Tijd = '$Tijd' AND v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" .$_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';",$db);


Object of class DateTime could not be converted to string

the error happens in the $result = etc… Full error: Catchable fatal error: Object of class DateTime could not be converted to string in E:\xampplite\htdocs\havo5groep2\reserveren.php on line 60 I use this form to get the post data  echo "<form action='reserveren.php' method='post'> <H3>Kies een Tijd</H3><br> <select name='Tijd'> "; while ($row = mysql_fetch_array($_SESSION["Tijd"])) { echo "<option value='" .$row['Tijd'] ."'>" . $row['Tijd'] ."</option>"; } echo "</select> <input type='submit' name='Reserveer' value='Reserveren'> </form>";  I get the values from$row from the following query:

        $resultaat = mysql_query ("SELECT Tijd FROM voorstelling v WHERE v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" .$_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';",$db);
$_SESSION["Tijd"] =$resultaat;


the value of Tijd in the select are all datetime records.

So my question is how do I succesfully get the value form the select form to convert into a timedate that I can use in my query

As has been intimated in the comments quite possibly is not a database isue, in fact the error you are receiving is generated from PHP.

The error is caused by a slight misunderstanding of what datetime->format() does.

This does not change the format the date and time is stored in rather it returns the date and time in that format immediately (datetime->format() documentation)

To correct this in your code you need to capture the result of "$Tijd->format(\DateTime::ISO8601);" in another variable such as: $Tijd = date_create($_POST ["Tijd"]);$formattedTime = $Tijd->format(\DateTime::ISO8601);  You can then use this in the SQL such: $result = mysql_query (
"SELECT Voorstellingsnummer
FROM voorstelling v
WHERE Tijd = '$formattedTime' AND v.Voorstellingsnummer NOT IN( SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50 ) AND Vestigingsnaam = '" .$_SESSION["geselecteerdvestiging"] . "' AND
Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';",$db
);