2012-11-14 2 views
0

데이터베이스에 항목을 삽입 할 준비가 된 문이 있습니다. 문이 잘 작동하고 항목을 삽입합니다. 함수에서 문을 래핑하고 함수를 호출하면 더 이상 데이터베이스에 삽입되지 않습니다. 함수에서이 명령문을 호출하는 데 문제가 있습니까? 사이드 노트 ... 내 최종 목표는 실제로 메서드로 클래스에이 함수를 넣는 것입니다. 나는 그것을 시도하고 있었고, 문제 해결을 시작했고 기능을 넣을 때 오류가 시작되었다고 결정했다. 다음 단계는 이것을 수업으로 옮기는 것입니다. 그게 가능하지 않도록 내 코드에 다른 것이 있습니까?함수에서 준비된 문

<?php 

include 'main_connection.php'; 

function add() { 
    $stmt = $mysqli->prepare("INSERT INTO user (name) VALUES (?)"); 
    $stmt->bind_param('s',$name); 
    $name = "test"; 
    $stmt->execute(); 
    $stmt->close(); 

} 

add(); 

?> 

답변

3

귀하는 variable scope 문제가 있습니다. 특히 add()은 변수 $mysqli 또는 $name을 알지 못합니다.

해결 방법에는 여러 가지가 있습니다. 빠른 제안 add()에 매개 변수를 전달하는 것입니다 :

function add($mysqli, $name) { 
    // your code 
} 

add($mysqli, $name); 

또는 전역 범위 사용하기 :

function add() { 
    global $mysqli, $name; 
    // your code 
} 

면책 조항 : 나도 옹호하고 있지 않다 있습니다. 다음을 참조하십시오 - PHP global in functions

+0

새로운 mysqli 클래스를 호출하여 이것을 수정할 수 있습니까? 이것은 좋은 생각입니까? – user1613223

+0

수 있습니다. 그러나 당신이 이미 연결을했다면 그것은 좋은 생각이라고 생각하지 않습니다. –

1
function add($mysqli, $name) { 
    $stmt = $mysqli->prepare("INSERT INTO user (name) VALUES (?)"); 
    $stmt->bind_param('s',$name); 
    $name = "test"; 
    $stmt->execute(); 
    $stmt->close(); 

} 

add($mysqli, $name); 
+0

+1은'$ name'을 (를) 찾습니다. –