2017-12-03 29 views
-2

내가 대신 내 현재 코드의 준비된 문을 사용하려면 :준비된 명령문을 사용하여 결과를 얻고 while 루프에서 사용하는 방법?

if(isset($_POST['submit']) && $_POST['checkGame'] != 'Any') 
    { 
     $game = $_POST['checkGame']; 
     $sql="SELECT ipaddress, port FROM servers WHERE game=('$game')"; 
      $result=mysqli_query($con,$sql); 
      while ($row=mysqli_fetch_array($result)) { 
      array_push($serverConnectionArray, ["address" =>$row['ipaddress'], "port" =>$row['port']]); 
    } 
    } 

나는 시도했다 :

if(isset($_POST['submit']) && $_POST['checkGame'] != 'Any') 
    { 
     $game = $_POST['checkGame']; 
     $stmt = $mysqli->prepare("SELECT ipaddress, port FROM servers WHERE game=?"); 
     $stmt->bind_param("s", $game); 
     $stmt->execute(); 
     $result = $stmt->get_result(); 
     $stmt->fetch(); 
      while ($row=mysqli_fetch_array($result)) { 
      array_push($serverConnectionArray, ["address" =>$row['ipaddress'], "port" =>$row['port']]); 
     $stmt->close(); 
    } 
    } 

그리고 더. 줄에 26

치명적인 오류에 ... list.php mysqli :

공지 사항 : 정의되지 않은 변수 그러나, 나는이 오류가 처리되지 않는 오류 : 준비하는 멤버 함수에()를 호출에 널 (null)에 .. .list.php : 26 스택 트레이스 : # 0 {메인} 던졌습니다 ... list.php on line 26

고마워!

+1

$ mysqli가 정의되지 않았습니다 ... –

답변

2

먼저, API 스타일을 혼합된다 MySQLi 확장은 객체 지향 (OOP) 접근법 ( $mysqli->) 또는 절차 접근법 ( mysqli_* 함수)의 두 가지 방법으로 사용될 수 있습니다. 두 스타일을 혼합 할 수는 없습니다.

OOP 스타일을 사용하려는 것처럼 보입니다. 이 경우, 먼저 실제 mysqli 객체를 생성 할 게 등으로, (또한 mysqli class의 인스턴스라고도 함) : 2

$mysqli = new mysqli('127.0.0.1', 'username', 'password', 'dbname'); 

그 후 진행하는 방법에 대한 자세한 내용은 basic examples in the documentation를 참조하십시오.


1) 아래 프레드-II-의 코멘트 @ 참조 : 그것은 실제로 혼합 할 수있는 인터페이스를 밝혀졌습니다. 나는 이것을 알지 못했다.
2) OP가 단순히 잘못된 변수 이름을 처리했는지 또는 OP가 처음에 MySQLi 연결을 인스턴스화하는 것을 완전히 잊었는지에 대한 질문이 모호합니다. 둘 다 똑같은 통지를 내 보낸다.

+0

감사합니다. 이 "$ conn = mysqli_connect ($ servername, $ username, $ password, $ dbname);"와 같은 의미입니까? Nvm이 귀하의 편집을 보았습니다. – Leyer

+0

@Leyer 그렇습니다. 그렇지만 연결을 사용하고자 할 때 나머지 코드에서 올바른 변수 이름 ('$ mysqli->'대신'$ conn->')을 사용해야합니다. –

+1

* "두 스타일을 혼합 할 수 없습니다."* - 틀렸어. 그것은 recommented 아니지만 그들은 함께 작동합니다. "믹싱 스타일"아래의 매뉴얼 http://php.net/manual/en/mysqli.quickstart.dual-interface.php에서 인용합니다 : * "언제든지 스타일을 전환 할 수 있습니다. 두 스타일을 함께 사용하는 것은 불가능합니다. 코드 명확성 및 코딩 스타일의 이유로 권장됩니다. "* –

-3

제대로 정의하지 않은 것처럼 보입니다. 모든

$connection = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

+0

OP는 PDO 확장을 사용하지 않고 MySQLi 확장을 사용합니다. –

+0

변수의 철자가 잘못되었습니다. 감사! – Leyer