2017-09-28 2 views
0

나는 MySQL의 DB에서 ID의 배열을 수집하고 어떤 값으로 그들 각각을 업데이트하기 위해 노력하고있어를 사용하여 루프에서 여러 행을 업데이트 이런 식으로 작동하지 않습니다. 이 정보에 대한 정보가 잔뜩 있지만 내 코드에 적용 할 수는 없습니다. http://php.net/manual/en/mysqli-stmt.bind-param.php#104073어떻게 준비된 문

가 어떻게 그것을 얻을 수 있습니다

나는이 내가 원하는 가까이 뭔가 생각?

+0

귀하의 루프의 외부해야 준비 - 한 번 준비 필요한만큼 여러 번 실행합니다. –

+0

피할 수없는 경우 루프에 삽입하지 마십시오. 귀하의 경우에는 피할 수 있습니다. 그렇게 말하면, 당신은'UPDATE t_teams SET logo = CASE logo when x then y ... END'와 같은 쿼리를 가질 수 있습니다. 추가 정보 - https://stackoverflow.com/questions/20255138/sql-update-multiple-records-in-one-query – Andrew

+0

@NigelRen 죄송하지만, 작동하지 않습니다. –

답변

-1

은이 같은라는 이름의 자리 표시자를 사용하도록 문을 변경해보십시오 :

"UPDATE t_teams SET logo = :logo WHERE id_team = :team" 

그런 다음 값이 방법 바인딩 : 어떤 이유

$stmt->bind_param("logo", $row["logo"]); 
$stmt->bind_param("team", $row['id_jogo']); 
+0

이 생각은 mysqli 연결에서 작동하지 않습니다. –

0

을, 나도 몰라, 왜 $statement->bindParam() 아무튼 ' 루프에서 일하지 마라. 물론 PDO로 전환하기에는 너무 많은 작업이 아니라면 PDO에서 $statement->bindValue()을 사용해 볼 수 있습니다. 그래서 같이

:

global $conn; 

$teams = getTeams(); // ID's 

$query = "UPDATE t_teams 
SET logo = ? WHERE id_team = ?"; 

$stmt = $conn->prepare($query); 

$indexCount = 0; 

foreach($teams as $row) { 
    $currDir = explode('/', $row["logo"]); 

    $stmt->binValue(++$indexCount, $currDir[5]); 

    $stmt->execute(); 
}