2013-12-15 10 views
0

Я создаю сайт для своих и борюсь с частями SQL, ниже приведены два отдельных заявления, с которыми я борюсь, если вы знаете, что может быть проблемой с любым из них, я ценю это.SQL с asp classic

Это утверждение

readsql = "SELECT * FROM Gallery WHERE <%=GalleryRs ("img_USERID")%> = <%=session ("usr_ID")%>" 

Это ошибка

Ожидаемое окончание заявления

/WIP/Gallery.asp, линия 20

readsql = «SELECT * FROM Gallery WHERE <% = GalleryRs ("img_USERID") ---------------------- --------------------------------^

Это второе утверждение

INSERT INTO like (lik_POSTID) VALUES('" &_ 
request("pos_ID") & "') 

и ошибка

Microsoft Access Database Engine ошибка '80040E14'

Синтаксическая ошибка в заявлении INSERT INTO.

/student/S0190204/WIP/like.asp, линия 56

Если вы можете помочь с любой из них, который был бы великий, благодаря

ответ

2

Попробуйте

readsql = "SELECT * FROM Gallery WHERE "& GalleryRs("img_USERID")&" = "& session("usr_ID") 

<% =%> не имеет смысла внутри блока жерех кода. Это когда вы хотите, чтобы вставить переменную жерех в ваш HTML код - символ «=» знак представляет собой сокращенную Response.Write - например

<h1><%= pagetitle %></h1> 

Также обратите внимание, что я взял из пространства после того, как «GalleryRs» и "сессия"

Edited

readsql = "SELECT * FROM Gallery WHERE "& GalleryRs("img_USERID")&" = '"& session("usr_ID") & "'" 
+0

Спасибо, что получил меня дальше, хотя сейчас он говорит о несоответствии типа. Любая идея, что это значит? – Jayyf9

+0

Какова ценность GalleryRs («img_USERID») и сеанса («usr_ID»)? – kloarubeek

+0

Несоответствие типов обычно происходит, когда число ожидается, и страница получает строку. Попробуйте его с помощью «Cint (GalleryRs (« img_USERID »)) и« Cint (session («usr_ID»)) « – John

0

Ваш выбор SQL должен выглядеть следующим образом, когда он получает в базе данных:

select * 
from Gallery 
where img_UserId = something 

Вы отправляете:

select * 
from Gallery 
where <%= etc 

Название вашего поля не включает <%. Посмотрите, почему вы используете переменную там. Если поле в предложении where не всегда одно и то же, не используйте переменную.

0
readsql = "SELECT * FROM Gallery WHERE <%=GalleryRs ("img_USERID")%> = <%=session ("usr_ID")%>" 

должен быть

readsql = "SELECT * FROM Gallery WHERE " & GalleryRs("img_USERID") & " = " & session ("usr_ID") 

Я согласен с Дэном, зачем использовать переменную для имени вашего поля?Кроме того, этот код имеет очень высокий уровень «удобства вставки в sql». По крайней мере, проверьте, что значения в GalleryRs («img_USERID») и сеансе («usr_ID») (конвертируются в int или проверяют длину). Лучше переместить это в хранимую процедуру!