我想創建一個簡單的PHP腳本來創建和分配給SQL用戶的屬性。查詢工作正常,如果沒有參數使用,但失敗,否則。創建用戶失敗Mysqli準備語句
做工精細
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = "CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'";
$stmt = $conn->prepare($sql);
$stmt->execute();
兩個用戶名和密碼?
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = "CREATE USER '?'@'localhost' IDENTIFIED BY '?'";
$stmt = $conn->prepare($sql);
$uname = "carn";
$pass = "pass";
$stmt->bind_param('ss', $uname, $pass);
$stmt->execute();
兩個用戶名和密碼都在語法?
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = 'CREATE USER "?"@"localhost" IDENTIFIED BY "?"';
$stmt = $conn->prepare($sql);
$uname = "carn";
$pass = "pass";
$stmt->bind_param('ss', $uname, $pass);
$stmt->execute();
錯誤,請檢查文檔
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = "CREATE USER [email protected]'localhost' IDENTIFIED BY ?";
$stmt = $conn->prepare($sql);
$uname = "carn";
$pass = "pass";
$stmt->bind_param('ss', $uname, $pass);
$stmt->execute();
錯誤語法,檢查文件
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = "CREATE USER `?`@'localhost' IDENTIFIED BY `?`";
$stmt = $conn->prepare($sql);
$uname = "carn";
$pass = "pass";
$stmt->bind_param('ss', $uname, $pass);
$stmt->execute();
我不知道在哪裏可以從這裏走。這可能是我使用引號的一個問題,我在這裏看到兩個相關的問題,但沒有一個回答正確。
@ Fred-ii-我說這可能是一個問題,不是我確定的。我嘗試了所有我能想到的組合,對於所有其他查詢,我從不用任何東西來包裝'?',它工作正常,但是'bind_param()'失敗。 – aron9forever
*「可能」*? - 更像「是」。據我所知,佔位符不能有引號和/或剔號。 –
像CREATE TABLE這樣的DDL語句不適用於參數。 'CREATE USER'可能是一樣的。 – JimmyB