prepare () выводит bool false, оператор выглядит для меня корректным [duplicate]

Параметры - это простой ввод в JasperReports. Перед использованием вы должны определить параметры в JasperReport. Вы можете отобразить значение переменной, вы можете использовать ее как часть булевых выражений, и вы даже можете передать ее в подзаголовки. Это может быть вход в SQL-запрос.

Поля - это простые определения переменных. Вы можете рассматривать их как переменные экземпляра объекта данных, переданных в отчет, или они могут быть именами ключей, если источником данных является Карта. Если вы настроили JasperReport для создания набора данных на основе SQL, то Fields - это имена столбцов ResultSet. Вы будете использовать поля для отображения набора результатов выполненного SQL-запроса.

Переменные - это еще один вид переменных, которые живут в отчете Jasper, они не являются входами. Они используются для вычисления суммы или среднего значения определенного поля (определенного выше). Вы можете выполнять многие другие предопределенные функции вычисления в полях с использованием переменных.

1
задан Pikachu the Purple Wizard 31 March 2019 в 00:50
поделиться

2 ответа

У вас есть это:

$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.)

0
ответ дан Thorsten Kettner 31 March 2019 в 00:50
поделиться

Метод prepare() может возвращать false, и вы должны проверить это. Что касается того, почему он возвращает false, возможно, имя таблицы или имена столбцов (в выражении SET или WHERE) не верны?

Попробуйте еще как: что-то вроде $conn->error_list для проверки ошибок, возникших при разборе SQL. (Я буду время от времени выводить фактические строки операторов SQL и вставлять их в phpMyAdmin для проверки, но там определенно что-то не получается.)

0
ответ дан Ludo 31 March 2019 в 00:50
поделиться
Другие вопросы по тегам:

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