MySQLI Выбрать из таблицы, используя подготовленные оценки
В настоящее время я нахожусь в процессе изменения всех моих старых MySQL на MySQLI. Однако у меня возникла проблема при попытке ВЫБРАТЬ из таблицы при использовании подготовленных операторов. Теги это строка.
Мой тестовый URL:
http://example.com/retreiveCustomArticle.php?Tags=the
Мой вывод:
string(3) "the" string(44) "SELECT `ID` FROM `Articles` WHERE `Tags` = ?" Success!: 0
Код:
<?php
//Open a new connection to the MySQL server
$mysqli = new mysqli('localhost','createyo_james','password','createyo_TestDatabase');
//Output any connection error
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
//values to be inserted in database table
$Tags = $_GET["Tags"];
var_dump($_GET["Tags"]);
$query = "SELECT `ID`, `NewsStory`, `Summary1`, `Summary2` FROM `Articles` WHERE `Tags` = ?";
$statement = $mysqli->prepare($query);
var_dump($query);
//bind parameters for markers, where (s = string, i = integer, d = double, b = blob)
$statement->bind_param('s', $Tags);
if($statement->execute()){
$result = $stmt -> get_result();
/* bind result variables */
$stmt->bind_result($ID,$NewsStory,$Summary1,$Summary2);
/* fetch values */
while ($stmt->fetch()) {
$output[]=array($ID,$NewsStory,$Summary1,$Summary2);
}
print(json_encode($output));
$stmt -> close();
}else{
die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}
$statement->close();
?>
2 ответа
Решение
В дополнение к тому, что сказал @VotetoClose, я предлагаю вам следующее:
$statement=$mysqli->prepare('SELECT ID FROM Articles WHERE Tags = ?');
$mysqli->execute(array($_GET['Tags']))
Ты пропускаешь bind_result()
а также fetch()
if($statement->execute()){
if ($statement->bind_result($theId)) { // $theId will be the result that is returned from the database
if ($statement->fetch()) { // if fetched successfully
print 'Success!: ' . $theId . '<br />'; // do this