2

そのため、MySQL を動作させるのに少し問題がありました。

Apache サーバーは稼働中で、PHP は適切にインストールされており、MySQL サーバーのステータスは実行中です。

呼び出すphpinfo()と、mysql.sock の場所がわかり、フォルダーとファイルの両方が存在します。

OSX 10.8.4 を実行しています

このチュートリアルに従って、チャットがどのように機能するかを把握しようとしています: http://www.ibm.com/developerworks/library/x-ioschat/

そのため、php スクリプトを実行すると、ページにエラーが表示されます。私は PHP が初めてで、デバッグに苦労しています。インストールは特に面倒でした。

したがって、 content-type: text/xml をコメント解除しておくと、次のエラーが発生します。

列 1 の行 2 のエラー: ドキュメントが空です

また、ページが最初のエラーまでレンダリングされていることもわかります。そのため、ページを読み込んだときにページが空白であることは理にかなっています。

コメントが付けられると、エラーが少し意味を成し始めます。ただし、PHP に対する私の絶対的な初心者の性質を考えると、それらをナビゲートする方法がよくわかりません。

エラーは次のとおりです。

注意: 未定義のインデックス: 6 行目の /messages.php の過去

――これは当然だと思います。私はまだクライアント側を構築していないので、過去の変数は提供されていないはずです。

警告: mysql_fetch_assoc() は、パラメーター 1 がリソースであると想定しており、16 行目の /messages.php で指定されたブール値です。

--つまり、私のバックグラウンドはクライアント側なので、これは、$result 変数にブール値が格納されていることを示していmysql_fetch_assoc()ます。else ステートメントトリガーされる必要があるため、それmysql_query()は適切に機能していないか、そのパラメーターが正しくないことを意味します。どちらか (どちらかの場合) もわかりませんし、どちらの解決策もわかりません。

警告: mysql_free_result() は、パラメーター 1 がリソースであると想定しており、24 行目の /messages.php で指定されたブール値です。

-- 繰り返しますが、上記と同じです。半分は理にかなっていますが、それを修正する方法が非常にわかりません。

そのため、エラーの後、下には何も表示されません。条件は、ブール値ではなくリソースが含まれているという前提で記述されているため、これは理にかなっています (私は思う??)

htmlentities()私のphpファイルでは、チュートリアルと比較すると、 StackOverflowで呼び出しが不要であると読んだため、呼び出しを削除したことがわかります。どちらの方法でも取得していたエラーの状態は変更されませんでした。

とにかく、与えられたアドバイス/ヘルプに感謝します! これまでの私のコードは次のとおりです。

チャット.sql:

DROP TABLE IF EXISTS chatitems;
CREATE TABLE chatitems (
id BIGINT NOT NULL PRIMARY KEY auto_increment,
added TIMESTAMP NOT NULL,
user VARCHAR(64) NOT NULL,
message VARCHAR(255) NOT NULL
);

メッセージ.php:

<?php
ini_set('display_errors','1');
//header( 'Content-type: text/xml' );
mysql_connect( 'localhost:/private/var/mysql/mysql.sock', 'root', '' );
mysql_select_db( 'http://localhost/Documents/JoistChat/chat.sql' );
if ( $_REQUEST['past'] ) {
    $result = mysql_query('SELECT * FROM chatitems WHERE id > '.
    mysql_real_escape_string( $_REQUEST['past'] ).
    ' ORDER BY added LIMIT 50');
} else {
    $result = mysql_query('SELECT * FROM chatitems ORDER BY added LIMIT 50' );    
}
?>
<chat>
<?php
while ($row = mysql_fetch_assoc($result)) {
?>
<message added="<?php echo( $row['added'] ) ?>" id="<?php echo( $row['id'] ) ?>">
    <user><?php echo( $row['user'] )  ?></user>
    <text><?php echo( $row['message'])?></text>
</message>
<?php
}
mysql_free_result($result);
?>
</chat>

test.html:

<html>
<head>
<title>Chat Message Test Form</title>
</head>
<body>
<form action="http://localhost/JoistChat/messages.php"
method="POST">
User: <input name="user" /><br />
Message: <input name="message" /><br />
<input type="submit" />
</form>
</body>
</html>
4

2 に答える 2

0

インデックスが設定されていないため'past'、if ステートメントのブール条件は false と評価されます。その結果、そのelse部分が実行されます。

エラーメッセージは、クエリが

SELECT * FROM chatitems ORDER BY added LIMIT 50

SQL エラーが発生しました。そのクエリを MySql クライアントで直接実行して、エラーの内容を確認してください。アクセスしているテーブル/データベースが作成/選択されていないと思います。

于 2013-08-13T06:53:12.793 に答える