У меня есть страница, которая вызывает jquery-вызов api для получения нескольких URL-адресов википедии. Затем я получаю имена статей из URL-адреса (т. Е. Получаю science
от http://en.wikipedia.org/science
и т. Д.), Добавляйте одинарные кавычки (') к каждому из них, стройте их вместе и, наконец, отправляйте их на страницу php, что вызывает вызов mysql select * from MyTable where title in('name1','name2','name3','name4')
. Проблема возникает, когда название статьи уже содержит в себе одну цитату (т. Е. Закон Хика), поскольку она разбивает одинарные кавычки where in
. Вот код, я использую:Как избежать одиночных кавычек в этом сценарии?
$.getJSON('http://ajax.googleapis.com/ajax/services/search/web?q=keyword site:en.wikipedia.org&rsz=8&v=1.0&callback=?',
function (r) {
var urls1="";
$.each(r.responseData.results, function(i, item) {
var thisurl = (i==0) ? "'" + item.url.substring(item.url.lastIndexOf('/') + 1) + "'" : ",'" + item.url.substring(item.url.lastIndexOf('/') + 1) + "'";
urls1 += thisurl.replace(/_/g,'%20');
});});
$('#quotes').html($('<div>').load('pr.php?s='+urls1 +' #quotes', function() {}
Я добавляю одинарные кавычки в названиях статей, так что строка должна быть все готово пойти на MySQL where in
.
Так резюмировать, шаги заключаются в следующем:
- сделать вызов апи и получить несколько адресов Википедии,
- получить название статьи из каждого URL,
- добавить их в
urls1
строку при замене символов подчеркивания пробелами - отправьте строку
urls1
через ajax на страницу pr.php. - В pr.php я следующее:
"SELECT * FROM MyTable WHERE title in".$_GET['s']
Я пытался делать mysql_real_escape_string($_GET['s'])
, но это не сработало.
Я сейчас пытаюсь избежать каких-либо одиночных кавычек внутри имен статей, поэтому where in
не сломается, но он не работает. Я попытался изменить приведенное выше значение на
var thisurl=(i==0) ? "'"+item.url.substring(item.url.lastIndexOf('/') + 1).replace(/'/g, "\'")+"'":",'"+item.url.substring(item.url.lastIndexOf('/') + 1).replace(/'/g, "\'")+"'";
Но это не сработало. Есть идеи?
TIA!
[The Great эскапизма (Или: Что нужно знать, чтобы работать с текстом в тексте)] (HTTP: // kunststube.net/escapism /) – deceze
Почему вы пытаетесь убежать с помощью JS? вам следует скрыться в PHP – JamesHalsall
Вы передаете половину инструкции SQL через URL-адрес? это звучит ужасно, подвержено ошибкам и просто неправильно. Отправьте json обратно на PHP, используйте json_encode/json_decode и обработайте экранирующую сторону сервера (например, используя параметризованные запросы) – Mahn