MySQLi를 사용하는 PHP에서 최적화된 준비된 명령문 사용
귀하의 코드에 준비된 명령문에 대한 매개변수 바인딩이 누락된 것 같습니다. mysqli::prepare 문서에 따르면 명령문을 실행하기 전에 매개변수 표시자를 바인딩해야 합니다.
// Bind parameters for the first insertion $name1 = 'one'; $age1 = 1; $stmt->bind_param('si', $name1, $age1); // Execute for the first insertion $stmt->execute(); // Bind parameters for the second insertion $name2 = 'two'; $age2 = 1; $stmt->bind_param('si', $name2, $age2); // Execute for the second insertion $stmt->execute();
mysqli의 장점
mysqli가 유일한 라이브러리는 아닙니다. 준비된 문을 지원하는 이 프로그램은 여러 가지를 제공합니다. 장점:
오류 처리가 포함된 전체 예
다음은 준비된 문을 사용하는 전체 예입니다. 오류 처리를 포함한 MySQLi 기반 PHP:
// Database connection $mysqli = new mysqli("localhost", "root", "root", "test"); if ($mysqli->connect_errno) { echo "Failed to connect: " . $mysqli->connect_error; exit; } // Prepare statement $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)"); if (!$stmt) { echo "Prepare failed: " . $mysqli->error; exit; } // Bind parameters for the first insertion $name1 = 'one'; $age1 = 1; $stmt->bind_param('si', $name1, $age1); // Execute for the first insertion $stmt->execute(); if ($stmt->errno) { echo "Execution failed: " . $stmt->error; exit; } // Bind parameters for the second insertion $name2 = 'two'; $age2 = 1; $stmt->bind_param('si', $name2, $age2); // Execute for the second insertion $stmt->execute(); if ($stmt->errno) { echo "Execution failed: " . $stmt->error; exit; } // Selection statement $stmt = $mysqli->prepare("SELECT * FROM users WHERE age = ?"); if (!$stmt) { echo "Prepare failed: " . $mysqli->error; exit; } // Bind parameters for selection $age = 1; $stmt->bind_param('i', $age); // Execute selection $stmt->execute(); if ($stmt->errno) { echo "Execution failed: " . $stmt->error; exit; } // Fetch results $result = $stmt->get_result(); if (!$result) { echo "Fetch failed: " . $stmt->error; exit; } while ($row = $result->fetch_assoc()) { echo $row['name'] . " " . $row['age'] . "<br>"; }
위 내용은 MySQLi를 사용하여 PHP에서 준비된 명령문 사용을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!