подготовленный оператор php mysqli

Эй, у меня быстрый. Есть ли способ включить переменную в подготовленный запрос? пример:

$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 . НЕ используйте переменные непосредственно в подготовленных операторах, поскольку это приведет к победе над целями готовых утверждений (кроме устранения времени синтаксического анализа)

  • Используйте вопросительные знаки в качестве заполнителей в SQL, где вы хотите, чтобы значение переменной было.
  • Используйте mysqli_stmt :: bind_param для привязки значений к заполнителям.

Если я не ошибаюсь, вы должны использовать 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