Как уже упоминалось в комментариях, это проблема определения. В частности, $con
не входит в объем вашей функции getPosts
.
Вы должны передать свой объект соединения в качестве зависимости, например
function getPosts(mysqli $con) {
// etc
Я также очень рекомендую прекратить выполнение, если ваше соединение не удалось. Что-то вроде этого должно быть достаточным
$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx");
if (mysqli_connect_errno()) {
throw new Exception(mysqli_connect_error(), mysqli_connect_errno());
}
getPosts($con);
Можно сделать несколько вещей:
(1) Одно решение состоит в том, чтобы включать общий фрагмент make-файла в весь Ваш Makefile.am
с:
include $(top_srcdir)/common.mk
...
bin_PROGRAMS = foo
foo_SOURCES = ...
в этом случае Вы записали бы
AM_CXXFLAGS = -fpic -Wall -Wextra
к common.mk
, и в будущем будет легче добавить больше макросов или правил ко всему Makefile.am
с, просто редактируя этот файл.
(2) Другое решение состояло бы в том, чтобы установить эти переменные глобально в Вашем configure.ac
(имя configure.in
было удержано от использования давно), как в:
...
AC_SUBST([AM_CXXFLAGS], [-fpic -Wall -Wextra])
...
Затем Вы ничего не должны даже говорить в Вашем Makefile.am
с, они автоматически наследовали это глобальное определение. Недостаток состоит в том, что Вы не можете уклонение легко (с первым решением, которое легко решить не включать common.mk
), и зависимость не является действительно явной сторонним людям (когда они читают Makefile.am
, у них нет подсказки о том, куда флаги могут прибыть из).
(3) решение для трети А состояло бы в том, чтобы сделать как [1 120] предложенный orsogufo: перезапись пользовательской переменной CXXFLAGS в [1 112]. Я отговорил бы от него, потому что это побеждает одну из функций Системы сборки GNU: пользователям разрешают переопределить эту переменную в [1 113] разовый. Например, можно хотеть к типу
make CXXFLAGS='-O0 -ggdb'
при отладке части кода, и это перезапишет любое определение CXXFLAGS
(но не те, которые в [1 115]). Честно говоря, большинство проектов не удается поддерживать это правильно, потому что они выделывают фокусы с [1 116].
Наконец, я должен упомянуть, что -fpic
, -Wall
, и -Werror
не портативные опции. В зависимости от объема Вашего проекта можно хотеть добавить, настраивают проверку на них (, gnulib недавно получил новые макросы к тестам для флагов предупреждений, и , libtool может использоваться для создания совместно использованных библиотек).