问题
Who can give me an advice? why the query can't to provide me an expected value? Thanks.
$mysqli = new mysqli($GLOBALS["mysql_host"], $GLOBALS["mysql_user"], $GLOBALS["mysql_passwd"], $GLOBALS["mysql_database"]);
$stmt = $mysqli->prepare("SELECT one FROM table ORDER BY date DESC LIMIT 1");
$last = $stmt->bind_result($one);
$stmt->execute();
$stmt->close();
$mysqli->close();
Echo $last; //it should be "abc"
回答1:
I think you have to execute
and then call fetch
on mysql_stmt
-objects.
Because you may get multiple results (rows).
With fetch
you will advance your result-Cursor.
Documentation: mysqli mysqli-stmt
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* prepare statement */
if ($stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {
$stmt->execute();
/* bind variables to prepared statement */
$stmt->bind_result($col1, $col2);
/* fetch values */
while ($stmt->fetch()) {
printf("%s %s\n", $col1, $col2);
}
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
?>
回答2:
I can.
An advise would be plain and simple: do not use mysqli
Use PDO instead
$stmt = $pdo->prepare("SELECT one FROM table ORDER BY date DESC LIMIT 1");
$stmt->execute();
$last = $stmt->fetchColumn();
echo $last; //it should be "abc"
clean, simple and works
来源:https://stackoverflow.com/questions/16085109/mysql-prepare-statement-select