Mysql
 sql >> база данни >  >> RDS >> Mysql

Подготвеният на MYSQLI оператор не се извежда

Първоначалният ви проблем е, че не проверявахте всеки призив за провал, само няколкото в началото. И двете store_result и bind_result също може да се провали.

Вашият специфичен проблем (след като поправите първоначалния) е, че правите select * за да получите множество колони, но обвързвате само една в резултата. Това е видно от съобщението за грешка, което получавате от bind_result обадете се:

Ако промените select изявление към нещо като select id from ... , ще откриете, че започва да работи.

Въпреки това, ако приемем, че искате повече колони, трябва да предоставите повече променливи в обвързването, нещо като:

$stmt = $db->prepare("SELECT col1, col2 FROM messages WHERE post_id = ?");
:
$ex = $stmt->bind_result($param1, $param2);

Ще забележите, че не използвам select * там горе е по-добре да използвате изрично именуване на колони в почти всички ситуации, така че:

  • не се изненадвате, когато DB схемата се промени;
  • получавате само нужните данни;
  • можете правилно да съпоставите колоните с променливи на резултата.

Почти единственият място, което някога съм намирал, че е добре да се използва select * е в инструментите за анализ на DB, където искате да получите всичко. Ако знаете какво искате предварително, това трябва да поискате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL IF ELSEIF в заявката за избор

  2. Как да получите всички публикации с всички категории в wordpress чрез mysql?

  3. Актуализиране на MySql база данни с помощта на PHP чрез javascript функция onClick

  4. Как да намеря втората по големина заплата от таблицата на служителите?

  5. Свържете няколко полета в едно с SQL