Как исправить ошибку с большим количеством переменных, чем параметров в методе mysqli_stmt_bind_param () - PullRequest
1 голос
/ 12 мая 2019

Я учился добавлять значения в базу данных с помощью PHP, и у меня возникла проблема с некоторым кодом ниже, где я хочу добавить значения в базу данных.

Я пробовал этот код ниже, но каждый раз, когда получаюthis Предупреждение: mysqli_stmt_bind_param (): Количество переменных не соответствует числу параметров в подготовленном операторе в C: \ path \ to \ the \ file.php в строке 38

Строка38 - строка с mysqli_stmt_bind_param () методом

$sql  = "INSERT INTO times(uid,a,b,c,d,e,f,g,t12,t13,t14,t15,t16,t17,t18,t19,t20) VALUES ('?','?','?','?','?','?','?','?',?,?,?,?,?,?,?,?,?);";

  $stmt = mysqli_stmt_init($conn);
  if (!mysqli_stmt_prepare($stmt, $sql)) {
    header("Location: ../index.php?error=sqlerror");
    exit();
  }
  else {
    mysqli_stmt_bind_param($stmt, "sssssssssssssssss", $uid, $a, $b, $c, $d, $e, $f, $g, $t12, $t13, $t14, $t15, $t16, $t17, $t18, $t19, $t20);
    mysqli_stmt_execute($stmt);
    echo "done!";
  }

uid, a, b, c, d, e, f и g столбцы в базе данных имеют тип TINYTEXT , а остальные столбцы имеют тип TINYINT (1) .

В переменной $ sql есть 17 вопросительных знаков иточные 17 с и параметры в mysqli_stmt_bind_param () метон в строке 38. Я ожидал, что значения будут добавлены в таблицу в моей базе данных, но я вижу только это предупреждение на веб-сайте, и естьнет значений в базе.

Может кто-нибудьпомогите мне с этим вопросом?

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

Попробуйте , а не , поместив ваш вопросительный знак в одинарные кавычки. '?' - это строка символов, состоящая из одного знака вопроса. не заполнитель для параметра.

0 голосов
/ 12 мая 2019

Попробуйте изменить первую строку на:

$sql  = "INSERT INTO times(uid,a,b,c,d,e,f,g,t12,t13,t14,t15,t16,t17,t18,t19,t20) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

Маркеры параметров ? не должны заключаться в кавычки в операторе SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...