-1

私がやろうとしているのは、テーブルに値が存在するかどうかを確認することです.存在しない場合は、失敗メッセージが表示されます

   $mysqli = new mysqli("localhost","root","", "myusers");
    print($string);
    if ($mysqli->connect_errno) {
        printf("Failed1");
        exit();
    }

    else
    {
    if ($result=$mysqli->query("SELECT 1 FROM `users` WHERE `k1`='$string' AND 'k2'='$string2'"))
    {

    if($result->num_rows == 0)
    {
    printf("Failed2");
    }

このクエリは、値がテーブルに存在するという事実にもかかわらず、常に Failed2 を返します。何が問題なのか、テーブルには 3 つの値 k0、k1、k2 がありますが、SELECT クエリには k1 と k2 のみを使用します。助けてください

編集:

' を削除して提案されたコードを変更しましたが、クエリは実行されず、Failed3 につながります

<?php  

$string1=$_POST['value1'];
$string2=$_POST['value2'];
$mysqli = new mysqli("localhost","root","", "myusers");
print($string);
if ($mysqli->connect_errno) {
    printf("Failed1");
    exit();
}

else
{
    if ($result=$mysqli->query("SELECT 1 FROM `users` WHERE k1='$string1' AND k2='$string2'"))
    {    
        if($result->num_rows == 0)
        {
            printf("Failed2");
        }
        else
        {
            //---------
        }
    }
    else
    {
         printf("Failed3");
    } 
}




?>
4

3 に答える 3

3

タイプミス:

'バッククォートの代わりに s を使用しました!

`k1`='$string' AND 'k2'='$string2'"
 ------------------^--^---------------- You have used single quotes!

それを次のように置き換えます。

SELECT 1 FROM `users` WHERE `k1`='$string' AND `k2`='$string2'
于 2012-12-10T17:14:22.467 に答える
0

テーブル名と列名からバッククォートと引用符を削除します。つまり、

SELECT 1 FROM users WHERE  k1 ='$string' AND k2='$string2'
于 2012-12-10T17:13:42.930 に答える
-1

1という列がない限り。したくないSelect 1 from users

これは、探していたものである場合、1 つの結果のみを返します。

SELECT * FROM `users` WHERE `k1`='$string' AND `k2`='$string2' LIMIT 1
于 2012-12-10T17:18:44.273 に答える