次のコードがあります。0行が返されたが、データが複数行返されている必要があります。PDOを使用して返された行を確認する
$sql2 = $conn->prepare("SELECT * FROM `tips` WHERE tips = `$tips`");
if ($sql2->rowCount() > 0) {
} else {
}
つまり、rowCount
は常に0ですが、データベースにデータがあります。
私はなどすべてのエラーを取得していないよ
次のコードがあります。0行が返されたが、データが複数行返されている必要があります。PDOを使用して返された行を確認する
$sql2 = $conn->prepare("SELECT * FROM `tips` WHERE tips = `$tips`");
if ($sql2->rowCount() > 0) {
} else {
}
つまり、rowCount
は常に0ですが、データベースにデータがあります。
私はなどすべてのエラーを取得していないよ
をrowCountを取得するには、事前にクエリを実行する必要があるが、そうする:somw有用な例がありmanualへ
$sql2=$conn->prepare("SELECT * FROM `tips` WHERE tips = '$tips'");
$sql2->execute();
if ($sql2->rowCount() > 0){
}else{
}
リンク。
$sql2=$conn->prepare("SELECT * FROM `tips` WHERE tips = :tips");
$sql2->bindParam(':tips', $tips, PDO::PARAM_INT); // or PDO::PARAM_STR
$sql2->execute();
if ($sql2->rowCount() > 0){
}else{
}
(これは非常に単純なクエリであり、bindParamを必要としないため) '$ sql2-> execute([':tips' => $ tips])'または ':tips'を '?' '$ sql2-> execute([$ tips])' – noahnu
@noahnu bindparamは単純なクエリではなく、簡単なクエリではありません。 SQLインジェクションを防止するためのものです。クエリに渡されたパラメータがユーザの入力から来た場合に、そのパラメータをサニタイズするために使用されます。したがって、「シンプルな」クエリであっても、本当に役に立ちます! –
@LelioFaietaこれはまだパラメータがバインドされたプリペアドステートメントです。配列を 'execute()'メソッドに送ることができるので、バインディングが簡単です。ところで、あなたはまだ名前付きパラメータを使うことができます... – jeroen
あなたが最初のクエリを実行する必要があります。ところで
は、私はあなたがPDOを最大限に活用するために使用することをお勧めします。プリペアドステートメントを使用する場合は、値のプレースホルダを使用し、ステートメントを実行するときに値にバインドする必要があります。 – jeroen
'\' $ tips \ ''または '' $ tips''ですか? –