2

私は PHP/MySQL を初めて使用し、最適なツールセットや適切なデバッグ方法を知りません。

これが私が取り組んでいるコードスニペットです。主な問題が 2 つあります。

1: エスケープ シーケンスが機能していないことに気付きました。ページ表示では \n はすべて無視されます。

2: コードが while ループに入っていないため、結果が表示されません。phpMyAdmin で同じクエリを実行すると、1 つの結果が得られます。

これは出力です:

I'm in your db!echoinside post結果テーブルがあります name: outside post

<?php
$mysqli = new mysqli("****", "*****", "******", "******");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
echo "I'm in your db!";
echo "echo";
if( $_POST["submit"] ) {
echo "inside post"; 
    if (!($stmt = $mysqli->prepare("SELECT Cust_name FROM SERVICE_TICKET WHERE Ticket_num=?"))) {
            echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
    }
    if (!$stmt->bind_param("i", $_POST['ticket'])) {
        echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
    }
    if (!$stmt->execute()) {
        echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
    }
    if (!$stmt->bind_result($Cust_name)) {
        echo "Binding output parameters failed: (" . $stmt->errno . ") " . $stmt->error;
    }
    else {
        echo "We have a result";
        echo "<table><br/>";
        echo "table exists";
        printf("<br/>\n\n\n\n\nname:  %s", $Cust_name);
        while ($stmt->fetch()){
            echo "in while loop";
            echo "<tr>\n<td>".$Cust_name."</td>\n</tr>";
        }
        echo "</table>";
    }

}
echo "outside post";
?>

フォームの html を追加します。

<head>
    <title>Bicycle Store Service Ticket</title>
    <link rel="stylesheet" type="text/css" href="web.css" />
</head>
<body>
    <h1>ACME BICYCLE SHOP</h1>
    <h3 align="center">GET IN GEAR!</h3>

    <form action="search_service.php" method="post">
    <h3>CHECK A SERVICE TICKET</h3>

    <h4>Ticket Number: <input type="text" ticket="ticket">&nbsp;&nbsp;

    <input type="submit" name="submit" value="Search">
    </form>

    <p><a href="index.html">HOME</a></p>
</body>
</html>

どんなアドバイスもとても役に立ちます。

4

2 に答える 2

3

問題 #1:エスケープ シーケンス機能していますが、HTML の改行は「意味のない空白」であるため、表示されません。タグを使用して改行を追加できます<br>

問題 #2:クエリが空の結果セットを返すように見える (指定された番号のチケットがない) ため、 の最初の呼び出し$stmt->fetch()は false を返します。

編集: HTML の「チケット」入力の行は次のようになります。

<h4>Ticket Number: </h4><input type="text" name="ticket">&nbsp;&nbsp;

ではname="ticket"なくticket="ticket"<h4>タグを閉じる必要があります。

于 2012-11-18T21:51:30.110 に答える
0

1: エスケープ シーケンスが機能していないことに気付きました。ページ表示では \n はすべて無視されます。

\nはエスケープ文字ではありません。改行(LFアラ改行)文字です。<PRE>そして、ブロック外の HTML では無視されているので、追加<PRE>(ただし、それはマークアップを「殺す」ことになります)、または正確に「HTML 内」<br />を意味するものを使用します。\n

PS: 必要がない?>場合は使用しないでください。

于 2012-11-18T21:52:55.447 に答える