-3

ここに私のコードスニペットがあります:

    if (!($stmt = $mysqli->prepare("SELECT * FROM CUSTOMER"))) {
            echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
    }
    if (!$stmt->execute()) {
        echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
    }
    $stmt->store_result();

        echo "<table border=2 cellpadding=4>
        <tr bgcolor=white>
        <th>Name</th>
        <th>Lname</th>
        <th>Phone</th>
        <th>Address</th>
        <th>Discount</th>
        <th>email</th>
        </tr>";
        while ($row = mysql_fetch_array($stmt)){
            echo "<tr>
            <td>".$row['Name']."</td>
            <td>".$row['Lname']."</td>
            <td>".$row['Phone']."</td>
            <td>".$row['Address']."</td>
            <td>".$row['Discount']."</td>
            <td>".$row['email']."</td>
            </tr>";
        }
        echo "</table>";

    $stmt->free_result();

$mysqli->close();
?>

mysql_fetch_array() はパラメーター 1 がリソースであることを期待していると言っています。myPHPadmin でクエリを確認しましたが、問題なく動作します。これが投稿されない理由がわかりません。

4

3 に答える 3

4

mysql_fetch_arrayこれは、コードの残りの部分が使用している「mysqli」拡張機能とは異なります。mysqli で準備されたステートメントの完全な例については、http://php.net/manual/en/mysqli.prepare.php を参照してください。

このようなものが必要だと思います( でマークされた変更***):

if (!($stmt = $mysqli->prepare("SELECT * FROM CUSTOMER"))) {
        echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

$result = $stmt->get_result(); //***

    echo "<table border=2 cellpadding=4>
    <tr bgcolor=white>
    <th>Name</th>
    <th>Lname</th>
    <th>Phone</th>
    <th>Address</th>
    <th>Discount</th>
    <th>email</th>
    </tr>";

    while ($row = $result->fetch_assoc()){  //***
        echo "<tr>
        <td>".$row['Name']."</td>
        <td>".$row['Lname']."</td>
        <td>".$row['Phone']."</td>
        <td>".$row['Address']."</td>
        <td>".$row['Discount']."</td>
        <td>".$row['email']."</td>
        </tr>";
    }
    echo "</table>";

$stmt->close(); //***

$mysqli->close();
于 2012-11-25T23:49:01.880 に答える
2

オブジェクトでmysql_* 関数を使用しています。mysqli使用する必要がありますmysqli_result::fetch_row

while ($row = $stmt->fetch_row()){
于 2012-11-25T23:48:37.183 に答える
0

私はこれに基づいて自分の質問に答えることができました:

http://www.php.net/manual/en/mysqli-result.fetch-array.php

それが最高のスタイルかどうかはわかりませんが、うまくいきました。以下の完全なphp

    <?php
    ini_set('display_errors', 'On');
    $mysqli = new mysqli("***", "***", "***", "***");
    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }
        $stmt = "SELECT * FROM CUSTOMER";

        if (!$result = $mysqli->query($stmt)) {
            echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
        }

            echo "<table border=2 cellpadding=4>
            <tr bgcolor=white>
            <th>Name</th>
            <th>Lname</th>
            <th>Phone</th>
            <th>Address</th>
            <th>Discount</th>
            <th>email</th>
            </tr>";
            while ($row = $result->fetch_array(MYSQLI_ASSOC)){
                echo "<tr>
                <td>".$row['Name']."</td>
                <td>".$row['Lname']."</td>
                <td>".$row['Phone']."</td>
                <td>".$row['Address']."</td>
                <td>".$row['Discount']."</td>
                <td>".$row['email']."</td>
                </tr>";
            }
            echo "</table>";

        $result->free();

    $mysqli->close();
    ?>
于 2012-11-26T00:18:54.723 に答える