秘密探偵クルクルは「?」の使用に関して正しかった。パラメータ化された変数の場合。 MySQLはクエリのインラインSQL変数に「@」を使用するため、スクリプトやインライン(selectサブクエリ)宣言の一部などから宣言されることを期待しています。
パラメータの両方のインスタンスを変更する必要があります...クエリとcommand.Parameters.Add...インスタンスの両方で。
また、気づきましたが、それが正しいかどうかはわかりませんが、WHERE句には、「pasword」(1つだけ)とパスワード(2つ)があります。意図的かどうかはわかりません。
最後に役立つことがあります。一部のパラメーターは列名と一致するため、列名と実際のパラメーターを強制的に区別するために「x」などを追加するだけで、パラメーターを少し変更することをお勧めします...
where... p.LoginID = ?xLoginID ...
およびコマンドパラメータ
objCommand.Parameters.AddWithValue("?xLoginID", loginID);