배열이 $friends
이고, 을 얻기 위해 $friend_new = join(',',$friends);
을 사용했습니다. 어디에 문제가문자열을위한 MySQL IN
$query = mysqli_query($connect_db, "SELECT * FROM post WHERE name IN ($friend_new)");
사람이 알고 있나요 :이 쿼리를 사용할 때 하지만 오류가 발생했습니다?
배열이 $friends
이고, 을 얻기 위해 $friend_new = join(',',$friends);
을 사용했습니다. 어디에 문제가문자열을위한 MySQL IN
$query = mysqli_query($connect_db, "SELECT * FROM post WHERE name IN ($friend_new)");
사람이 알고 있나요 :이 쿼리를 사용할 때 하지만 오류가 발생했습니다?
implode("','", $friends)
및 IN ('$friends_new')
은 문자열 값이므로 사용해야합니다.
코드는 삽입에 취약합니다. 당신은 PDO/mysqli와 함께 적절하게 매개 변수화 된 쿼리를 사용해야합니다.
+1은 SQL 삽입을 언급하고 PDO를 제안하는 유일한 사람입니다. – Asaph
귀하의 목록과 같이한다 :
... IN ('friend1','friend2','friend3')
당신 같은 친구의 배열이있는 경우 :
$friends = array("friend1","friend2","friend3");
당신은 IN
에 사용하기 위해 준비하는 implode
를 사용할 수 있습니다
$friend_new = "'" . implode("','", $friends) . "'";
마지막으로,
SELECT * FROM post WHERE name IN ($friend_new)
개별 문자열을 따옴표로 묶지 않아 오류가 발생합니다. 가입 당신이 같이 할 수있는 이상 한 문자가 다음에 "풀"을 지정할 수 있습니다으로 :
$query = mysqli_query($connect_db,
"SELECT * FROM post " .
"WHERE name IN ('".join("', '", $friends)."') ";
또는이다
$friend_new = join("', '", $friends);
$query = mysqli_query($connect_db,
"SELECT * FROM post " .
"WHERE name IN ('$friend_new') ";
을 중간 ', '
쓰기에 가입해야하고, ''
[* prepared statements *] (http://j.mp/T9hLWi) – Kermit