Эй, у меня быстрый. Есть ли способ включить переменную в подготовленный запрос? пример:
$sql = "SELECT id, title, author, LEFT(description, 40) AS excerpt, image_small, image_med, date FROM posts ORDER BY id DESC LIMIT $start, $postsPerPage"; $result = $connect->prepare($sql) or die ('error'); $result->execute(); $result->bind_result($id, $title, $author, $excerpt, $image_small, $image_med, $date);
Благодаря!
вы хотите следующее:
$start = 1; $postsPerPage = 1; $sql = "SELECT id, title, author, LEFT(description, 40) AS excerpt, image_small, image_med, date FROM posts ORDER BY id DESC LIMIT ?, ?"; $stmt = $connect->prepare($sql) or die ('error'); $stmt->bind_param('ii', $start, $postsPerPage); $stmt->execute(); $stmt->bind_result($id, $title, $author, $excerpt, $image_small, $image_med, $date); while($stmt->fetch()) { printf('<h1>%s</h1><p>%s <small> by %s on %s</small></p>', htmlspecialchars($title), htmlspecialchars($excerpt), htmlspecialchars($author), htmlspecialchars($date) ); }
это связывает обе вопросительные знаки с целыми ( i
) значениями $start
и $postsPerPage
. НЕ используйте переменные непосредственно в подготовленных операторах, поскольку это приведет к победе над целями готовых утверждений (кроме устранения времени синтаксического анализа)
Если я не ошибаюсь, вы должны использовать bindParam и заменять переменные в своем запросе вопросительным знаком
$sql = "SELECT id, title, author, LEFT(description, 40) AS excerpt, image_small, image_med, date FROM posts ORDER BY id DESC LIMIT ?, ?"; $result = $connect->prepare($sql) or die ('error'); $result->bindParam(1, $start); $result->bindParam(2, $postsPerPage);
вы можете найти больше примеров на http://php.net/manual/en/pdo.prepared-statements.php