sql >> データベース >  >> RDS >> Mysql

PHPエラーのテーブルのすべての値='s'

    なぜvar_dump(stmt['likedFour']); 's'を返す :

    stmtの前にドル記号がないため 、したがって、PHPはあなたが定数にアクセスしようとしていると見なします stmt 変数の代わりに $stmt 。その定数を定義していないため、文字列にアクセスしようとしていると想定してフォールバックします。 "stmt" 。文字列の場合、インデックスは数値である必要があるため、PHPは「不正な文字列オフセット」警告をスローしますが、'likedFour'をキャストして修正しようとします。 整数(0になります) 。

    したがって、var_dump(stmt['likedFour']) var_dump("stmt"[0])とまったく同じことを意味します PHPに変換します。これが、出力"s"を取得する理由です。 :"stmt"の最初の文字 。

    実際に結果を得る方法 欲しい:

    最初に、クエリから結果の行を取得する必要があります。 $stmt mysqli_stmtです クエリの実行と結果の取得に使用するオブジェクトであり、実際には結果そのものではありません。

    将来の頭痛の種を減らすために、結果を取得する前に、クエリが正常に実行されたかどうかを常に確認してください。次に、データの行をフェッチします:

    $success = $stmt->execute();
    if (!$success) {
        echo $stmt->error;
    } else if ($stmt->num_rows == 0) {
        echo 'No results matching that username';
    } else {
        $result = $stmt->get_result();
        $row = $result->fetch_assoc();
        var_dump($row['likedFour']);
    }
    

    返される行数がわからない場合は、安全のためにそれらをループしてください:

    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        var_dump($row['likedFour']);
    }
    



    1. PHPPDOトランザクションの複製

    2. Mysqlまたは/および優先順位?

    3. sys.dm_exec_describe_first_result_set_for_objectがSQLServerでどのように機能するか

    4. MySQLでNULL値のないレコードを選択する方法