Trying to retrieve a single field from a mysql table. Here’s the PHP:
if ($signatureDAT) { mysqli_query($dragonden, "INSERT INTO Signatures(signature) VALUES('$signatureDAT')"); $sigID = mysqli_insert_id($dragonden); // RETRIEVE DATA FROM DB, TO VERIFY IT WAS SAVED PROPERLY $sigDAT = mysqli_query($dragonden, "SELECT signature FROM Signatures WHERE id = '$sigID'"); // SEND RESULTS BACK TO AJAX $data = array(); array_push($data, $signatureDAT, $sigDAT); print json_encode($data); }
I then use ajax to retrieve $sigDAT
Ajax returns the following result for $sigDAT
:
[object Object]
Ajax returns $signatureDAT
(the original data) correctly.
$sigDAT
and $signatureDAT
should have identical value, so I suspect the problem is in the “RETRIEVE” section of code.
Advertisement
Answer
To answer your question, you need to use mysqli_fetch_assoc()
to retrieve the results – $sigDAT
in your code is an object of the class mysqli_result
. However, your query is vulnerable to SQL injection attacks, and you should therefor use a prepared statement to execute your queries. See the code below.
Also, if you set mysqli_report()
to throw exceptions on error, you don’t have to perform your subsequent select to verify that the query completed – because if an error occurs, an exception is thrown, and you don’t reach the part where it adds the values into $data
.
// Make MySQL throw exceptions on error mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); if ($signatureDAT) { $data = []; try { $stmt = $dragonden->prepare('INSERT INTO Signatures(signature) VALUES (?)'); $stmt->bind_param("s", $signatureDAT); $stmt->execute(); $data[] = $signatureDAT; $data[] = $stmt->insert_id; $stmt->close(); } catch(Exception $e) { // An error occurred, handle that here } print json_encode($data); }