Возникла проблема с выполнением mysqli_query для выполнения

Из-за негибкого жесткого кодирования фактического типа функции для обратного вызова вы не можете использовать какие-либо обычные адаптивные или привязывающие трюки, чтобы помочь вам здесь. Сторонняя библиотека действительно хочет, чтобы вы передали функцию, не являющуюся членом, и вы не можете многое сделать. Вы можете подумать о том, почему вы пытаетесь передать ему адрес функции-члена, и если ваш дизайн или использование библиотеки могут измениться.

Один из вариантов, если вам нужно только установить один обратный вызов, должен иметь частную функцию static или namespace, которая ссылается на указатель экземпляра singleton, и использует это для отправки по обратному вызову.

Если вам нужно несколько элементов, возможно, шаблон будет обернуть хакерство (непроверенный код здесь, просто идея).

template <int which_callback>
struct CallbackHolderHack
{
    static int callback_func(std::string str) { dispatchee_->myCallback(str); }
    static MyStruct* dispatchee_;
};

template <int which_callback>
MyStruct* CallbackHolderHack::dispatchee_(0);

И использовать его:

CallbackHolderHack<0>::dispatchee_ = new MyStruct;
registerCallback(&CallbackHolderHack<0>::callback_func);
16
задан GilloD 21 February 2010 в 05:25
поделиться

1 ответ

Вы проверили возвращаемое значение mysqli_query ()? Он возвращает FALSE, если произошла ошибка. В этом случае mysqli_error () предоставит вам дополнительную информацию об ошибке.

<?php
$con = mysqli_connect("localhost", "root", "", "test");
if (mysqli_connect_errno()) {
  printf("Connect failed: %s\n", mysqli_connect_error());
  exit();
}

$query = "INSERT INTO files VALUES (NULL, 5, 'hello')";
echo "<pre>Debug: $query</pre>\m";
$result = mysqli_query($con, $query);
if ( false===$result ) {
  printf("error: %s\n", mysqli_error($con));
}
else {
  echo 'done.';
}
34
ответ дан 30 November 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: