私はphpが私にとって新しい言語であることを認めます。
これで、これらのそれぞれを個別に機能させることができます。私の準備クエリ SELECT * FROM... では、PDO fetch assoc while ループは機能しますが、列のフェッチは機能しません。次に、SELECT COUNT(*) を使用すると、フェッチ列は機能しますが、フェッチ アソシエーションは機能しません。
それで、この周りに離れているので、両方が機能しますか?ユーザーがログイン情報を入力したかどうかを判断するために、整数値 (1 または 0) として存在する行数を返すには、fetch 列が必要です。しかし、データベースのテーブルのユーザー名セクションに入力された文字列値を返すために、そこに列をフェッチする必要があります。この情報を使用して、ユーザーからの入力と照合してユーザーとパスワードを検証できるようにします。
ありがとう、これが私のコードです。もっと明確に説明する必要がある場合は、試してみます。
<?php
$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'inb271assignment'
);
$pdo = new PDO('mysql:host=' . $config['db']['host'] . '; dbname=' . $config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try
{
$pdo->beginTransaction();
$username = $_POST['Username'];
$password = $_POST['Password'];
//Nicholas will be $dbUsername when fetch is working correctly.
$databaseusername = Nicholas;
if ($username&&$password)
{
$result = $pdo->prepare("SELECT COUNT(*) FROM members WHERE Username=?");
$result->execute(array($databaseusername));
$row = $result->fetchColumn();
if ($row!=0) {
while ($rows = $result->fetch(PDO::FETCH_ASSOC)) {
$dbUsername = $rows['Username'];
}
echo $dbUsername;
}
else
die("That user doesn't exist");
}
$pdo->commit();
}
catch(PDOException $pe)
{
echo($pe->getMessage());
}
?>
現在、そこに SELECT COUNT(*) があります。そのため、ページのフォームにユーザー名とパスワードを入力すると、!=0 として返され、while ループが機能します。また、SELECT * がある場合、while ループは正常に機能します。しかし、カウントが必要なので、そうしないので、そうではありません。そのため、データベースから必要な情報を取得できません。