У меня есть подготовленное заявление (выберите с соединениями) в моем PHP, что, кажется, присвоение значений для всех, кроме одной из переменных:PHP/MySQL Подготовленный оператор не присваивает значение переменной?
$dbRating = "x";
$dbFavDate = "x";
if($stmt = $dbcon->prepare("
SELECT i.*, u.username, r.rating, f.date_favorited
FROM image i
INNER JOIN user u ON u.uid = ?
LEFT JOIN rating r ON r.iid = ? AND r.uid = ?
LEFT JOIN favorite f ON f.iid = ? AND f.uid = ?
WHERE i.iid = ?")) {
$stmt->bind_param("iiiiii", $qImageOwner, $qImageId, $uid, $qImageId, $uid, $qImageId);
$stmt->execute();
$stmt->bind_result($dbIid, $dbOwnerUid, $dbTitle, $dbDescription, $dbFilename, $dbCatid, $dbDateCreated, $dbDateModified, $dbOwnerUsername, $dbRating, $dbFavDate);
$stmt->fetch();
$stmt->close();
}
Я поставил этот вопрос в PHPMyAdmin непосредственно и получили обратно все ожидаемые значения , поэтому я знаю, что это не sql. Я возвращаю все значения как ожидалось , за исключением для $ dbFavDate, по какой-то причине это всегда отображается как «x» (начальное значение, которое я назначил ему перед запросом), в то время как $ dbRating, обрабатываемый таким же образом, возвращается ожидаемое значение соответствующего рейтинга. Ошибок не возникает, кажется, что переменной просто не присваивается фактическое значение, возвращаемое из запроса?
Любая помощь была бы принята с благодарностью. Thanks, TE
с использованием '$ dbcon-> prepare()' без параметризации не мешает вам атаковать SQL-инъекцией! –
Не знакомы - ссылка на то, как/что вы имеете в виду? Кроме того, любая идея о «потерянной» переменной значения? EDIT: да, я думаю, я знаю, о чем вы говорите - я использовал эту структуру для вставок, но не выбирал. Я изменю код, чтобы это отразить, и сообщите, разрешает ли это значение сброшенной переменной. – TwstdElf
Обновлен код в исходном сообщении. Еще одна проблема - $ dbFavDate не присваивается значение ... – TwstdElf