Рейтинг:
2
Wendelius
Не уверен, правильно ли я понимаю вопрос, но с вашим текущим кодом оператор insert будет выполняться столько раз, сколько повторяется цикл. Поэтому, если вы хотите запустить оператор только один раз, переместите его за пределы цикла.
В описании вы говорите, что вам нужны дубликаты значений в базе данных. Это оставляет некоторые вопросы, касающиеся структуры базы данных. Вполне возможно, что проблема действительно должна быть решена путем изменения схемы базы данных. Но без дополнительной информации это просто предположение.
Member 13637584
Когда я перемещаю его за пределы цикла, он не вставляется в базу данных правильно?
Wendelius
Что вы хотите этим сказать? Является ли вставка использующей неправильные значения? Если это так, то вам нужно выбрать значения, которые вы хотите использовать в некоторых переменных внутри цикла, и использовать эти переменные вне цикла.
Member 13637584
Я действительно пытался это сделать, так как держал $MealID=$dbRow["MealID"] внутри цикла, а затем ссылался на него вне цикла, но все равно не работает правильно?
Wendelius
Если вы назначаете $MealID внутри цикла, ничего не исследуя, то $MealID будет содержать последний MealId при выходе из цикла. В этом ли проблема?
Member 13637584
Да вот именно так?
Wendelius
Затем вам нужно использовать некоторое сравнение IF внутри цикла. Я не могу сказать вам, каково правильное условие, так как я не знаю логики, которую вы хотите использовать, но подумайте об этом псевдокоде
while loop
if some_condition is true then
set $mealid to desired value
end if
advance to next record
end loop
use $mealid in insert statement
Member 13637584
это в основном, когда пользователь заходит на страницу(в первый раз), я хочу, чтобы эта вставка работала, и это все? Будет ли если заявление работать?
Wendelius
Это совершенно невозможно ответить, не видя всего кода. Но в целом, если вам нужно выполнить что-то условно, то да, если это один из способов сделать это.
Member 13637584
существует ли оператор if, который может указать, когда пользователь впервые заходит на страницу?
Member 13637584
К сожалению, я не хочу этого делать по нескольким причинам. Как вы можете помочь мне с утверждением IF? Я попробовал оператор if, но он, похоже, не работает - см. обновленный код выше
Wendelius
Прости, но мне трудно понять, что тебе нужно.
Если вам нужно отслеживать посещения страниц, я думаю, что это довольно трудно сделать без использования файлов cookie.
Или проблема в том, что вы хотите запустить инструкцию insert, но не хотите, чтобы вставка произошла, если запись уже существует?
Пожалуйста, опишите ситуацию более подробно.
Member 13637584
В принципе, мне нужно, чтобы это было запущено один раз, так как, как только это будет в базе данных, мне это больше не нужно. Мне не нужно отслеживать посещения страниц,когда пользователь получает эти элементы displayeed(первая часть цикла while), вот почему оператор INSERT должен произойти, но мне трудно остановить эту конкретную часть цикла от цикла каждого обновления. Мне нужно, чтобы он сделал вставку один раз и остановился - он помещает значения в базу данных.
Рейтинг:
1
Patrice T
Этот код просто неправильный и не может быть выполнен из-за отсутствия 2 ')'
$stmt->execute(array(
':UserID' => $UserID,
':MealID' => $MealID
Member 13637584
Извините, но у меня это есть в Кодексе. Я обновил вышесказанное.
Patrice T
действительно, так будет лучше.
Member 13637584
@ppolymorphe у вас есть какое-нибудь решение этой проблемы??
Patrice T
Ваш фрагмент кода не является полным, и мы можем только догадываться, что происходит.
Мой лучший вариант-использовать отладчик, чтобы увидеть, что происходит в этом коде и с переменными.