Jump to content
  • 0

ошибка запроса


egoregor
 Share

Question

Есть такой код:

<?php
$mshost = "localhost"; // Хост
$msuser = "user"; // Имя пользователя
$mspassword = "11111"; // Пароль
$msname = "test_db1"; // Имя базы данных

$msconnect = mysql_connect($mshost, $msuser, $mspassword);

mysql_select_db($msname, $msconnect);



mysql_query("CREATE TABLE rooms ( n_room int,
color text)", $msconnect);
mysql_query("CREATE TABLE people ( id int,
name text, n_room int)", $msconnect);

mysql_query("INSERT INTO rooms VALUES (101, 'синий')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (102, 'красный')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (103, 'желтый')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (104, 'белый')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (105, 'белый')", $msconnect);

$res=mysql_query("SELECT * FROM test_zero");
while($row=mysql_fetch_array($res))
{
$n_room=$row[n_room];
$color=$row[color];

echo "($n_room) - $color <br>";
}


mysql_close($msconnect);

?></p>

после запуска появляется надпись:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in U:\home\work\www\page_5.php on line 59

Находил различные решения, но они не помогали.

В чем вообще проблема и как это исправить?

Edited by egoregor
  • Like 1
Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

после запуска появляется надпись:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in U:\home\work\www\page_5.php on line 59

Находил различные решения, но они не помогали.

В чем вообще проблема и как это исправить?

Сначала нужно показать код файла page_5.php и обратить внимание на 59 строку. В приведённом вами коде нет 59 строки, отсюда я считаю что это не тот фаил на который указывает ошибка. И в приведённом вами коде нет подключения внешнего файла.

  • Like 1
Link to comment
Share on other sites

  • 0

Находил различные решения, но они не помогали.

В чем вообще проблема и как это исправить?

ну во первых выводи ошибки


$msconnect = mysql_connect($mshost, $msuser, $mspassword)or die(mysql_error());
mysql_select_db($msname, $msconnect)or die(mysql_error());
mysql_query("CREATE TABLE rooms ( n_room int,
color text)", $msconnect)or die(mysql_error());

везде где запросы к базе.

если чтото пойдет не так ты узнаешь , напиши что вышло.

Link to comment
Share on other sites

  • 0

после запуска появляется надпись:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in U:\home\work\www\page_5.php on line 59

Находил различные решения, но они не помогали.

В чем вообще проблема и как это исправить?

Сначала нужно показать код файла page_5.php и обратить внимание на 59 строку. В приведённом вами коде нет 59 строки, отсюда я считаю что это не тот фаил на который указывает ошибка. И в приведённом вами коде нет подключения внешнего файла.

59 строка это:

while($row=mysql_fetch_array($res))

Находил различные решения, но они не помогали.

В чем вообще проблема и как это исправить?

ну во первых выводи ошибки


$msconnect = mysql_connect($mshost, $msuser, $mspassword)or die(mysql_error());
mysql_select_db($msname, $msconnect)or die(mysql_error());
mysql_query("CREATE TABLE rooms ( n_room int,
color text)", $msconnect)or die(mysql_error());

везде где запросы к базе.

если чтото пойдет не так ты узнаешь , напиши что вышло.

начал добавлять "or die(mysql_error())", и после того, как добавил ее после $res=mysql_query("SELECT * FROM rooms") появился результат :)

хм... А попробовал без этой фразы и все равно работает. Значит я что-то упустил.

Но все равно большое спасибо )

Вот только почему настолько много выводит?

(101) - синий

(102) - красный

(103) - желтый

(104) - белый

(105) - белый

(101) - синий

(102) - красный

(103) - желтый

(104) - белый

(105) - белый

(101) - синий

(102) - красный

(103) - желтый

(104) - белый

(105) - белый

(101) - синий

(102) - красный

(103) - желтый

(104) - белый

(105) - белый

(101) - синий

(102) - красный

(103) - желтый

(104) - белый

(105) - белый

(101) - синий

(102) - красный

(103) - желтый

(104) - белый

(105) - белый

(101) - синий

(102) - красный

(103) - желтый

(104) - белый

(105) - белый

Хотя надо, чтобы всего до 105 выводил

Link to comment
Share on other sites

  • 0

Понял. Вся проблема в этой части кода

mysql_query("INSERT INTO rooms VALUES (101, 'синий')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (102, 'красный')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (103, 'желтый')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (104, 'белый')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (105, 'белый')", $msconnect);

Просто при открытии страницы создавались новые значения.

Дальнейшая проблема, каким образом отследить, есть ли эти значения в таблице, и если нет, то создать. Иначе не создавать.

Link to comment
Share on other sites

  • 0

Понял. Вся проблема в этой части кода

mysql_query("INSERT INTO rooms VALUES (101, 'синий')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (102, 'красный')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (103, 'желтый')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (104, 'белый')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (105, 'белый')", $msconnect);

Просто при открытии страницы создавались новые значения.

Дальнейшая проблема, каким образом отследить, есть ли эти значения в таблице, и если нет, то создать. Иначе не создавать.

Так же делать sql запрос и при положительном ответе не сохранять, точнее не insertить

Link to comment
Share on other sites

  • 0

Ура. Вроде бы так не создает дубликатов

$res=mysql_query("SELECT * FROM rooms");

if ($row=mysql_fetch_array($res)) {
}
else {
mysql_query("INSERT INTO rooms VALUES (101, 'синий')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (102, 'красный')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (103, 'желтый')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (104, 'белый')", $msconnect);
mysql_query("INSERT INTO rooms VALUES (105, 'белый')", $msconnect);
}

Еще раз всем спасибо.

Link to comment
Share on other sites

  • 0

а я вот смотрю на первый пост (дальше пока даже и не глядел)... А если обновить страницу с этим скриптом, то что будет? Или это должно выполняться один раз? Я про то что создаются таблицы без проверки на их существование. Не помешало бы как минимум сделать так

CREATE TABLE IF NOT EXISTS `rooms` ....

Link to comment
Share on other sites

  • 0

а я вот смотрю на первый пост (дальше пока даже и не глядел)... А если обновить страницу с этим скриптом, то что будет? Или это должно выполняться один раз? Я про то что создаются таблицы без проверки на их существование. Не помешало бы как минимум сделать так

CREATE TABLE IF NOT EXISTS `rooms` ....

А вот зря не глядели, автор уже нашёл свою ошибку (пост №6)

Link to comment
Share on other sites

  • 0

LunatiK, так я видел :) Просто по ходу ещё совет на будущее

Ну да, в копилку знаний... но думаю когда понадобится, то уже забудется.

Да и ваше предложение не совсем к месту, если есть таблица то она ошибку выдаст и не перезапишется, а вот проблемы-то с INSERTом, нужно проверять на наличие этих данных в таблице и при отсутствии тогда уже добавлять, причём построчно.

Link to comment
Share on other sites

  • 0

кстати, опять отвлечённое (уж извините).. Не всегда ошибки показываются, всё зависит от настройки сервера.. И пока сайт отлаживается советую в самом начале вставить этот код.. Тогда уж точно все ошибки будут учтены

ini_set('display_error','1');
error_reporting(E_ALL);

Edited by Gold Dragon
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy