나는 다음과 같은 코드가 있습니다PHP 변수는 MySQLi 문에서 작동하지
$indtag = '';
foreach($pretag as &$indtag) { //cycles through tags, puts quotes into check by tag
$quote = mysqli_query($mysqli, "SELECT `id`, `$indtag` FROM `beyonce` WHERE `$indtag` LIKE '%$indtag%'");
while($row = mysqli_fetch_assoc($quote)) {
echo $row['$indtag'];
echo $row['id'];
}
}
표는 id
의, quote
의 각 태그에 대한 다음 각각의 열 (분노 ang
예를 인)에 대한 필드가 있습니다. pretag
은 태그들로 가득 찬 배열입니다 (rom
은 로맨스입니다, ang
은 분노이고, dece
은 속임수입니다). 나는 그 ID들과 태그들로 따옴표를 찾으려고 노력하고 있습니다. 이 문은 SQL에서 ang
으로 실행하면 잘 동작하지만 변수를 사용하여 태그의 열/필드를 선택하려고하면 아무 것도 나타나지 않습니다. 어떤 아이디어?
SELECT `id`, `$indtag` FROM `beyonce` WHERE `$indtag` LIKE '%$indtag%'
^ ^
과 같은 @tadman 포인트 아웃, 이런 식으로 할 준비된 문 mysqli_stmt_bind_param
를 사용하지 않거나, : 당신이 열 이름 indtag
를 이용해야하는 위치
** 경고 ** : 당신은 매개 변수가있는 쿼리를 사용한다 mysqli''사용하는 경우 ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param. php)를 사용하여 쿼리에 사용자 데이터를 추가합니다. ** 심각한 [SQL injection bug] (http://bobby-tables.com/)를 만들므로 문자열 보간을 사용하여 **이를 수행하지 마십시오. 또한 잘 알려진 목록에 대해주의 깊게 스크리닝하지 않으면 동적 열 이름을 사용하여 무효화하십시오. – tadman
'foreach ($ pretag as & $ indtag)'가 참조로 된 특별한 이유는 무엇입니까? –
나는 실제로 당신이 비욘세라는 테이블을 가지고 있다는 것에 상당히 놀랐다. – castis