Итак, у меня возникли проблемы с работой MySQL.PHP ошибки загрузки MySQL
Сервер Apache запущен, PHP установлен правильно, и мой статус сервера MySQL запущен.
Когда я звоню phpinfo()
, он сообщает мне, где находится mysql.sock, и существует папка и файл.
Я бегу OSX 10.8.4
Я следую за этот учебник, чтобы попытаться получить представление о том, как будет работать чатов: http://www.ibm.com/developerworks/library/x-ioschat/
Так что, когда я бегу мой PHP скрипт, страница загружается с ошибками. Я новичок в PHP, и у меня сложная отладка времени, установка была особенно сложной.
Так что, если я держу тип содержимого: текст/XML раскомментирована Я получаю эту ошибку:
error on line 2 at column 1: Document is empty
Он также говорит мне, что страница отображается до первой ошибки, так что имеет смысл, что страница когда я загружаю его.
Когда прокомментировано, ошибки начинают иметь немного больше смысла; однако, учитывая мой абсолютный новичок в PHP, я не совсем уверен, как их перемещать.
Вот ошибки:
Notice: Undefined index: past in /messages.php on line 6
- Это имеет смысл, я думаю. Я еще не создал клиентскую сторону, поэтому не должно быть никакой переменной прошлого.
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /messages.php on line 16
--So, мой фон на стороне клиента, так что это говорит мне о том, что мой переменных $ результата имеет логическое значение, хранящееся в нем, вместо того, чтобы все, что должно быть в нем вызов mysql_fetch_assoc()
функции. Поскольку инструкция else должна быть триггером, это означает, что либо mysql_query()
не работает правильно, либо мой параметр для него неверен. Я не знаю, что (если есть), и я не знаю, как это решить.
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in /messages.php on line 24
--Again, то же, что и выше; полу-имеет смысл, очень не уверен, как это сделать.
Итак, после ошибок ничего не отображается ниже. Что имеет смысл, потому что условия написаны в предположении, что у них будет ресурс, а не логический (я думаю?)
В моем php-файле, если вы сравните его с учебником, вы увидите, что я вынул вызовы htmlentities()
, потому что я читал в StackOverflow, что они не нужны, и они не меняли состояние ошибок, которые я получал в любом случае.
В любом случае, большое спасибо за любой совет/помощь! Вот мой код до сих пор:
chat.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>
1. Вы используете [** устаревший ** API баз данных] (http://stackoverflow.com/q/12859942/19068) и должны использовать [современную замену] (http://php.net/ ручной/EN/mysqlinfo.api.choosing.php). 2. Где вы видели, что «htmlentities» не нужны? Это необходимо (на самом деле, «htmlspecialchars» лучше), но по причинам, не связанным с проблемой, которую вы испытываете. См. [Этот вопрос] (http://stackoverflow.com/questions/1996122/how-to-prevent-xss-with-html-php/1996141#1996141). – DCoder
3. Отладка 101: если вы получили значение, которое вы не ожидали (логическое), вернитесь туда, где вы приобрели это значение (в 'mysql_query()'), обратитесь к [руководству] (http: // us. php.net/mysql_query#refsect1-function.mysql-query-returnvalues), чтобы узнать, что приведет к возврату функции, оттуда. Также будут полезны комментарии пользователей на этой странице руководства. Эта конкретная ошибка, безусловно, входит в пятерку наиболее часто задаваемых вопросов по SO ... – DCoder
+1 Хорошо заданный вопрос. Соответствующие детали, сообщения о кодах и ошибках, а также попытки понять/объяснить возникшие ошибки. – maxf130