所以,我在让 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 未注释,我会收到此错误:
第 2 行第 1 列的错误:文档为空
它还告诉我页面被渲染到第一个错误,所以当我加载它时页面是空白的是有道理的。
当它被评论时,错误开始变得更有意义。但是,鉴于我对 PHP 的绝对新手本性,我不确定如何导航它们。
以下是错误:
注意:未定义的索引:第 6 行 /messages.php 中的过去
——我认为这是有道理的。我还没有建立客户端,所以应该没有提供过去的变量。
警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在第 16 行的 /messages.php 中给出
mysql_fetch_assoc()
--所以,我的背景是客户端,所以这告诉我的是我的 $result 变量中存储了一个布尔值,而不是函数调用中应该包含的任何内容。由于 else 语句应该触发,这意味着要么mysql_query()
工作不正常,要么我的参数不正确。我不知道哪个(如果有的话),也不知道解决方案。
警告:mysql_free_result() 期望参数 1 是资源,在第 24 行的 /messages.php 中给出布尔值
--再次,同上;半有意义,非常不确定如何修复它。
因此,在出现错误之后,下面不会显示任何内容。这是有道理的,因为条件是在假设它们将具有资源而不是布尔值的情况下编写的(我认为??)
在我的 php 文件中,如果您将其与教程进行比较,您会看到我取消了htmlentities()
调用,因为我在 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>
测试.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>