MySQLIコードを使用してレジスタを作成する際に問題が発生しました。テーブル/接続変数が一致しており、クエリを介して渡される正しい変数に期待される文字列が入力されます。を実行するとき、query
またはprepare & execute
任意のタイプのクエリを実行すると、次のように返されます。
致命的なエラー:40行目の/var/www/New/API/FormValidations.phpにある非オブジェクトのメンバー関数query()を呼び出す
私のコードは次のとおりです。
$Query = $STD->prepare("SELECT * FROM Users WHERE Username='$Username'");
$Query->execute();
$Number = $Query->num_rows;
if ($Number !== 0)
{
echo "Username Already In Use";
}
else
{
$Insert_User = $STD->prepare("INSERT INTO Users ('Username', 'Password') VALUES ('$Username', '$Password)");
$Insert_User->execute();
echo "Account Created!";
}
これが私の接続スクリプトです:
$STD = new mysqli('localhost', 'root', 'xxxxx', 'SLMS');
$AccessCon = new mysqli('localhost', 'root', 'xxxxx', 'DBAccess');
if ($AccessCon->connect_error) {
die("Access Has Been Revoked. Please Contact Administration");
}
if ($STD->connect_error) {
die("Standard Access Has Been Revoked. Please Contact Administration");
}
およびユーザー用のSQLテーブル:
CREATE TABLE IF NOT EXISTS `Users` (
`ID` int(255) NOT NULL AUTO_INCREMENT,
`Username` varchar(255) NOT NULL,
`Password` text NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
すべてのクエリコードをコメントアウトして実行してみました
$Query = $STD->query("SHOW TABLES");
$Results = $STD->fetch_array(MYSQLI_ASSOC);
これでも、$Query
変数でエラーが返されました。
また、データベースにすでに存在するものを検索するようにコードを変更しようとしました。
$Query = $STD->prepare("SELECT * FROM Users WHERE Username='Test'");
そして私の次のように同封しようとしました$Username
:
$Query = $STD->prepare("SELECT * FROM Users WHERE Username='{$Username}'");
これは成功しませんでした。誰かがこの状況に光を当てることができるかどうか疑問に思いましたか?
編集:
スクリプト全体をコメントアウトして実行するだけです。
$Query = $STD->query("SHOW TABLES");
$test = $Query->fetch_array(MYSQLI_ASSOC);
print_r($test);
結果を返します。
アップデート:
コードを次のように変更しました。
$Query = $STD->prepare("SELECT * FROM Users WHERE Username=?");
$Query->bind_param("s", $Username);
$Query->execute();
最終更新:
致命的なエラー:45行目の/var/www/New/Register.phpにある非オブジェクトのメンバー関数bind_param()を呼び出す
これは新しいエラーです。
問題のある行:
$Insert_User = $STD->prepare("INSERT INTO Users ('Username', 'Password') VALUES (?, ?)");
$Insert_User->bind_param("ss", $Username, $Password);
$Insert_User->execute();