Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: с php5 на php7
Форумы портала PHP.SU » » Вопросы новичков » с php5 на php7

Страниц (2): [1] 2 »
 

1. yogeswar - 21 Сентября, 2017 - 08:43:16 - перейти к сообщению
Здравствуйте!

Непонятный случай! Команды списывал с вашего сайта!Хочу получить массив.

PHP:
скопировать код в буфер обмена
  1. $link = new mysqli('localhost', 'root', '', 'repetitorstvo1');
  2. if ($link->connect_error) {
  3.     die('Error : ('. $link->connect_errno .') '. $link->connect_error);
  4. }
  5.  
  6. $sql3 = "SELECT * FROM catalog1 WHERE familiy = '".$a[1]."' and
  7. mobil_tel = '".$a[7]."'";
  8.  
  9. $result = mysqli_query($link, $sql3);
  10.  
  11. $row = mysqli_fetch_array($result, MYSQLI_NUM);


Выдаёт ошибку

Fatal error: Uncaught Error: Call to undefined function  mysqli_fetch_array() in C:\sayt\data\htdocs\save_rep1.php:437
Stack trace:
#0 {main}
thrown in C:\sayt\data\htdocs\save_rep1.php on line 437

Строка 437 - это как раз


Если я ещё напишу, как на вашем сайте
PHP:
скопировать код в буфер обмена
  1. printf ("%s (%s)\n", $row[0], $row[1]);

то даже ошибки не выдаёт. Вообще не читает. В чём проблема?
2. andrewkard - 21 Сентября, 2017 - 12:59:41 - перейти к сообщению
yogeswar пишет:
Команды списывал с вашего сайта!Хочу получить массив.

Вы уверены?

http://www.php.su/mysqli_query

yogeswar пишет:
$link = new mysqli('localhost', 'root', '', 'repetitorstvo1');
if ($link->connect_error) {
die('Error : ('. $link->connect_errno .') '. $link->connect_error);
}

$sql3 = "SELECT * FROM catalog1 WHERE familiy = '".$a[1]."' and
mobil_tel = '".$a[7]."'";

$result = mysqli_query($link, $sql3);



Цитата:

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
....
/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
if ($result = $mysqli->query("SELECT * FROM City", MYSQLI_USE_RESULT)) {

/* Note, that we can't execute any functions which interact with the
server until result set was closed. All calls will return an
'out of sync' error */
if (!$mysqli->query("SET @a:='this will not work'")) {
printf("Error: %s\n", $mysqli->error);
}
$result->close();
}
3. yogeswar - 21 Сентября, 2017 - 14:16:51 - перейти к сообщению
Переписал полностью вашу "Цитата:".

PHP:
скопировать код в буфер обмена
  1. $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
  2. ....
  3. /* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
  4. if ($result = $link->query("SELECT .....", MYSQLI_USE_RESULT)) {
  5.  
  6. /* Note, that we can't execute any functions which interact with the
  7. server until result set was closed. All calls will return an
  8. 'out of sync' error */
  9. if (!$link->query("SET @a:='this will not work'")) {
  10. printf("Error: %s\n", $link->error);
  11. }
  12. $result->close();
  13. }


Выдаёт:
Error: Commands out of sync; you can't run this command now

А хотелось бы получить массив и с ним работать

Ничего не выдавало и такое:

PHP:
скопировать код в буфер обмена
  1.  
  2. $sql3 = "SELECT ...'";
  3. $result = mysqli_query($link, $sql3);
  4. $row = mysqli_fetch_array($result, MYSQLI_NUM);
  5. printf ("%s (%s)\n", $row[0], $row[1]);
  6. $result = $link->query($sql3);
  7.  
4. andrewkard - 21 Сентября, 2017 - 14:28:47 - перейти к сообщению
yogeswar пишет:
....

не смутило? Это было сокращение...
(Добавление)
PDO как по мне удобнее, пробуйте:
PHP:
скопировать код в буфер обмена
  1.  
  2. $mysqli = new mysqli('localhost', 'root', '', 'repetitorstvo1');
  3.  
  4. $query = "SELECT * FROM catalog1 WHERE familiy = ? and mobil_tel = ?";
  5.  
  6. $stmt = $mysqli->prepare($query);
  7.  
  8. $stmt->bind_param("ss", $a[1],$a[7]);
  9.  
  10. $stmt->execute();
  11.  
  12. $data = [];
  13.  
  14. $result = $stmt->get_result();
  15.  
  16. while ($row = $result->fetch_assoc())
  17. {
  18.     $data[] = $row;
  19. }
  20.  
  21. print_r($data);
  22.  


код не проверял
5. yogeswar - 21 Сентября, 2017 - 14:44:19 - перейти к сообщению
Попробовал. Единственно что делал, это переправлял $mysqli на $link, так как у меня чтение базы такое:

PHP:
скопировать код в буфер обмена
  1. $link = new mysqli('localhost', 'root', '', 'repetitorstvo1');
  2. if ($link->connect_error) {
  3.     die('Error : ('. $link->connect_errno .') '. $link->connect_error);
  4. }


То есть списал всё по-вашему:

PHP:
скопировать код в буфер обмена
  1. $query = "SELECT * FROM catalog1 WHERE familiy = :familiy and mobil_tel = :tel";
  2. if (!($stmt = $link->prepare($query))) {
  3.     echo "Не удалось подготовить запрос: (" . $link->errno . ") " . $link->error;
  4. }
  5. if (!$stmt->execute(array(':familiy' => $a[1], ':tel' => $a[7]))) {
  6.     echo "Не удалось выполнить запрос: (" . $stmt->errno . ") " . $stmt->error;
  7. } 
  8. if (!($res = $stmt->get_result())) {
  9.     echo "Не удалось получить результат: (" . $stmt->errno . ") " . $stmt->error;
  10. }
  11. var_dump($res->fetch_all());


В этом случае даже ошибки не выдаёт. Просто не читает.
(Добавление)
Списал всё у andrewkard, тоже просто не читает: переход на пустую страницу.
6. andrewkard - 21 Сентября, 2017 - 15:01:23 - перейти к сообщению
yogeswar пишет:
В этом случае даже ошибки не выдаёт.

это не правильный, не стой ветки взял, этот пробуйте:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $mysqli = new mysqli('localhost', 'root', '', 'repetitorstvo1');
  4.  
  5. $query = "SELECT * FROM catalog1 WHERE familiy = ? and mobil_tel = ?";
  6.  
  7. $stmt = $mysqli->prepare($query);
  8.  
  9. $stmt->bind_param("ss", $a[1],$a[7]);
  10.  
  11. $stmt->execute();
  12.  
  13. $data = [];
  14.  
  15. $result = $stmt->get_result();
  16.  
  17. while ($row = $result->fetch_assoc())
  18. {
  19.     $data[] = $row;
  20. }
  21.  
  22. print_r($data);
  23.  
7. yogeswar - 21 Сентября, 2017 - 15:07:52 - перейти к сообщению
Списал всё у andrewkard, но уже переправил $mysqli на $link.

PHP:
скопировать код в буфер обмена
  1. $query = "SELECT * FROM catalog1 WHERE familiy = '".$a[1]."' and mobil_tel = '".$a[7]."'";
  2.  
  3. $stmt = $link->prepare($query);
  4.  
  5. $stmt->bind_param("ss", $a[1],$a[7]);
  6.  
  7. $stmt->execute();
  8.  
  9. $data = [];
  10.  
  11. $result = $stmt->get_result();
  12.  
  13. while ($row = $result->fetch_assoc())
  14. {
  15.     $data[] = $row;
  16. }
  17.  
  18. print_r($data);


Опять ничего - переход на пустую страницу
8. andrewkard - 21 Сентября, 2017 - 15:12:12 - перейти к сообщению
yogeswar пишет:
Опять ничего - переход на пустую страницу

как можно так списывать?
andrewkard пишет:
$query = "SELECT * FROM catalog1 WHERE familiy = ? and mobil_tel = ?";

yogeswar пишет:
$query = "SELECT * FROM catalog1 WHERE familiy = '".$a[1]."' and mobil_tel = '".$a[7]."'";

(Добавление)
а так?

PHP:
скопировать код в буфер обмена
  1.  
  2. $mysqli = new mysqli('localhost', 'root', '', 'repetitorstvo1');
  3.  
  4. $query = "SELECT * FROM catalog1 WHERE 1=1";
  5.  
  6. $res = $mysqli->query($query);
  7.  
  8. $row = $res->fetch_assoc();
  9.  
  10. print_r($row);
  11.  
9. yogeswar - 21 Сентября, 2017 - 15:17:36 - перейти к сообщению
Списал всё как у andrewkard:

PHP:
скопировать код в буфер обмена
  1. $mysqli = new mysqli('localhost', 'root', '', 'repetitorstvo1');
  2.  
  3. $query = "SELECT * FROM catalog1 WHERE familiy = ? and mobil_tel = ?";
  4.  
  5. $stmt = $mysqli->prepare($query);
  6.  
  7. $stmt->bind_param("ss", $a[1],$a[7]);
  8.  
  9. $stmt->execute();
  10.  
  11. $data = [];
  12.  
  13. $result = $stmt->get_result();
  14.  
  15. while ($row = $result->fetch_assoc())
  16. {
  17.     $data[] = $row;
  18. }
  19.  
  20. print_r($data);


В ответ - пустая страница. Даже ошибок не выдаёт.
(Добавление)
Скопировал точно:

PHP:
скопировать код в буфер обмена
  1. $mysqli = new mysqli('localhost', 'root', '', 'repetitorstvo1');
  2.  
  3. $query = "SELECT * FROM catalog1 WHERE 1=1";
  4.  
  5. $res = $mysqli->query($query);
  6.  
  7. $row = $res->fetch_assoc();
  8.  
  9. print_r($row);


В ответ - ничего! Полностью не знаю что делать!
(Добавление)
Вот когда andrewkard писал свою "Цитата:", то хотя бы предыдущие команды проходили. Правда выдавало
Error: Commands out of sync; you can't run this command now
10. andrewkard - 21 Сентября, 2017 - 15:36:35 - перейти к сообщению
yogeswar пишет:
Полностью не знаю что делать!

прикрепите ответ phpinfo();
11. yogeswar - 21 Сентября, 2017 - 15:43:02 - перейти к сообщению
отправил
12. andrewkard - 21 Сентября, 2017 - 15:45:37 - перейти к сообщению
вроде ж должно работать, коннект правильный, база данных та?
так еще пробуйте
PHP:
скопировать код в буфер обмена
  1.  
  2. $link = mysqli_connect('localhost', 'root', '', 'repetitorstvo1');
  3.  
  4. /* проверка соединения */
  5.     printf("Соединение не удалось: %s\n", mysqli_connect_error());
  6.     exit();
  7. }
  8.  
  9. $data = [];
  10.  
  11. $query = "SELECT * FROM catalog1 WHERE 1=1";
  12.  
  13. if ($result = mysqli_query($link, $query)) {
  14.  
  15.     /* извлечение ассоциативного массива */
  16.     while ($row = mysqli_fetch_assoc($result)) {
  17.         $data[] = $row;
  18.     }
  19.  
  20.     /* удаление выборки */
  21.     mysqli_free_result($result);
  22. }
  23.  
  24. /* закрытие соединения */
  25. mysqli_close($link);
  26.  
13. yogeswar - 21 Сентября, 2017 - 15:50:21 - перейти к сообщению
Ничего, andrewkard не выдаёт. Даже предыдущие команды не читает!
(Добавление)
Может совет дадите залезть на какой-либо сайт?
14. andrewkard - 21 Сентября, 2017 - 16:12:30 - перейти к сообщению
yogeswar пишет:
не выдаёт

такого не бывает, включите вывод всех ошибок, посмотрите логи сервера
15. yogeswar - 21 Сентября, 2017 - 18:24:15 - перейти к сообщению
Я не такой сильный программист. Поэтапно, без программистского слэнга ("поюзай" и так далее), какой командой включить вывод ошибок.
У меня

PHP:
скопировать код в буфер обмена
  1. if (ini_get('display_errors') != 1) {
  2. ini_set('display_errors', 1);
  3. };


но эта штука работает погано.
Как посмотреть логи сервера?

 

Powered by ExBB FM 1.0 RC1