Запит на оновлення в обраному запиті EmmanuelJoly2 - OpenClassrooms
Питання ? Не хвилюйтеся, ми допоможемо вам !

Заголовок, схоже, стосується вкладених запитів, але я не можу знайти в ньому свого щастя.
Поясню: у мене є "особиста" таблиця, яка містить у стовпці "документ" масив, перетворений у рядок (серіалізувати).
Ця таблиця повинна бути оновлена для всього персоналу, тому додайте рядок до цієї таблиці.
Я запрограмував щось, що працює, але не впевнений, що воно чисте, тому ризик помилки, тому що мені здається, що ми не можемо зробити запит, коли інший не закінчений:
Сподіваюся, це досить ясно
Дякую за твою допомогу
Швидко мене турбує одна річ.
Ви закриваєте запит Req двічі (один раз у вашому циклі, один раз після цього). Чи не є помилка на цьому рівні ?
Потім спробуйте зв’язати свої налаштування,
Я визнаю, що не детально розглянув, але це вискочило на мене.
Іноді зупинка його розвитку на 5 хвилин дозволяє почати знову, зіткнувшись з проблемою;)
Так, останній $ req-> closeCursor (); має бути $ response-> closeCursor ();
Ми НІКОЛИ не готуємо запит у циклі: підготовка ОНОВЛЕННЯ повинна бути виконана раніше петля, а не всередині.
Тоді ми могли б зробити кілька "оптимізацій" (використовувати bindParam, відключити емуляцію), і що є більш "брудним" у цьому коді - це використання (не) серіалізації. Власне кажучи, я б скоріше використовував JSON, якби у мене справді не було вибору.
Я насправді не знаю, що ви робите, але збереження масиву до таблиці, як правило, є патчем для погано розробленої бази даних.
Якщо, наприклад, ви хочете зберегти книги, які користувач П'єр позичив з бібліотеки, ви можете зберегти в таблиці користувачів і в полі "запозичені" таблицю [1056,1250,128], зроблену з ідентифікаторів цих 3 фунтів. . Але це погана ідея. Крім того, це заборонено за методом Merise. Натомість вам слід скласти таблицю посилань (асоціація мовою Merise) із двох стовпців: перший, що містить ідентифікатор користувача, а другий - ідентифікатор книги. Отож ви отримаєте таблицю, що містить лише зовнішні ключі [#iduser, #idlivre].
Domi65 писав:
Я насправді не знаю, що ви робите, але збереження масиву до таблиці, як правило, є патчем для погано розробленої бази даних.
Якщо, наприклад, ви хочете зберегти книги, які користувач П'єр позичив з бібліотеки, ви можете зберегти в таблиці користувачів і в полі "запозичені" таблицю [1056,1250,128], зроблену з ідентифікаторів цих 3 фунтів. . Але це погана ідея. Крім того, це заборонено за методом Merise. Натомість вам слід скласти таблицю посилань (асоціація мовою Merise) із двох стовпців: перший, що містить ідентифікатор користувача, а другий - ідентифікатор книги. Отож ви отримаєте таблицю, що містить лише зовнішні ключі [#iduser, #idlivre].
сердечно.
вже, дякую за допомогу всім,
Це правда, що я лише шанувальник веб-програмування, і деякі терміни вислизають від мене як bindPAram, який я читав у документі, але я не можу зрозуміти, що саме він робить.
Після того, як я працюю на сервері своєї компанії, який працює з xamp 3.2.2, і я не маю над ним контролю.
З іншого боку Domi65, я дивлюсь таким чином. Дійсно, мета моєї сторінки - поставити червоним кольором персонал, який не прочитав усіх обов'язкових документів, а зеленим - тих, хто прочитав усі. Отже, я залишився в масиві, що містить ідентифікатор документа, який асоціюється з 0, якщо не читається, і 1, якщо читається (можливо, трохи непостійний). Тому ваша ідея - це таблиця посилань, яка пов’язує ідентифікатор персоналу з ідентифікатором запозиченої книги, тому, якщо я правильно розумію, буде стільки рядків з ідентифікатором того самого персоналу, скільки є запозичених книг ?
Щодо bindParam, я переглянув ще раз, і якщо я добре розумію, взявши пояснення на сайті php.net, другий код є більш точним:
Якщо так, перший код, я дізнався його у відкритому класі на курсі Матьє Небра. Поки вона різниця між ними?
дякую за відповідну допомогу
-
Відредаговано EmmanuelJoly2 28 серпня 2020 р. О 13:03:17