api에 대한 jquery 호출로 여러 개의 wikipedia URL을받는 페이지가 있습니다. 그런 다음 URL에서 기사 이름을 추출하고 (즉, http://en.wikipedia.org/science
에서 science
을 가져옴), 각각에 작은 따옴표 (')를 추가하고 문자열을 함께 입력 한 다음 php 페이지로 보내면 mysql select * from MyTable where title in('name1','name2','name3','name4')
호출이됩니다. where in
작은 따옴표가 깨져서 기사 이름에 이미 작은 따옴표 (예 : "Hick 's law")가있는 경우 문제가 발생합니다.이 시나리오에서 작은 따옴표를 이스케이프 처리하려면 어떻게해야합니까?
$.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
을 위해 갈 모든 준비가되어 있어야 그래서 문서 이름에 따옴표를 추가 해요 : 여기에 내가 사용하고 코드입니다.
- API 호출을 확인하고 여러 위키 백과 URL을 얻을 가
- 각 URL에서 문서 이름을 얻을, 다음과 같이
그래서 요약하자면, 단계는 밑줄을 공백으로 바꾸는 동안
urls1
문자열을 ajax를 통해 pr.php 페이지로 보냅니다. pr.php에서- 나는 다음을 수행하십시오
"SELECT * FROM MyTable WHERE title in".$_GET['s']
urls1
문자열에 추가,
내가 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!
[위대한 현실 도피를 (또는 : 당신은 텍스트 내에서 텍스트로 작업하기 위해 알아야 할)] (HTTP : // kunststube.net/escapism /) – deceze
JS를 사용하여 탈출을 시도하는 이유는 무엇입니까? PHP에서 벗어나야합니다 – JamesHalsall
URL을 통해 SQL 문의 절반을 전달하고 있습니까? 그것은 끔찍하고, 오류가 발생하기 쉽고, 명백히 틀린 것처럼 들립니다. json을 PHP로 보내고 json_encode/json_decode를 사용하고 이스케이프 처리하는 서버 측 처리 (예 : 매개 변수화 된 쿼리 사용) – Mahn