Параметры - это простой ввод в JasperReports. Перед использованием вы должны определить параметры в JasperReport. Вы можете отобразить значение переменной, вы можете использовать ее как часть булевых выражений, и вы даже можете передать ее в подзаголовки. Это может быть вход в SQL-запрос.
Поля - это простые определения переменных. Вы можете рассматривать их как переменные экземпляра объекта данных, переданных в отчет, или они могут быть именами ключей, если источником данных является Карта. Если вы настроили JasperReport для создания набора данных на основе SQL, то Fields - это имена столбцов ResultSet. Вы будете использовать поля для отображения набора результатов выполненного SQL-запроса.
Переменные - это еще один вид переменных, которые живут в отчете Jasper, они не являются входами. Они используются для вычисления суммы или среднего значения определенного поля (определенного выше). Вы можете выполнять многие другие предопределенные функции вычисления в полях с использованием переменных.
У вас есть это:
$stmtupdate = $conn->prepare("UPDATE $table SET ? = ? WHERE email = ?");
$stmtupdate->bind_param("sis", $column, $value, $email);
Это приводит к этому SQL:
UPDATE $table
SET @var1 = @var2 WHERE email = @var3
заменен, например, на
UPDATE $table
SET 'column' = 123 WHERE email = 'something'
Но вы хотите что-то вроде [ 118]
UPDATE mytable
SET mycolumn = 123 WHERE email = 'something'
Итак, есть две ошибки: вам нужно имя таблицы, а не $ table. И вам нужно имя столбца, а не значение переменной связывания строк.
Использовать конкатенацию строк:
$stmtupdate = $conn->prepare("UPDATE ".$table." SET ".$column." = ? WHERE email = ?");
$stmtupdate->bind_param("is", $value, $email);
(надеюсь, я не ошибаюсь. Прошло некоторое время с тех пор, как я использовал PHP с SQL.)
Метод prepare()
может возвращать false, и вы должны проверить это. Что касается того, почему он возвращает false, возможно, имя таблицы или имена столбцов (в выражении SET или WHERE) не верны?
Попробуйте еще как: что-то вроде $conn->error_list
для проверки ошибок, возникших при разборе SQL. (Я буду время от времени выводить фактические строки операторов SQL и вставлять их в phpMyAdmin для проверки, но там определенно что-то не получается.)