- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В php скрипте выскакивает ошибка, причем только на определенном хостинге:
DB SELECT query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
А в файле том первые строки
<?php
header('Content-Type: text/html; charset: windows-1251');
require 'db.php';
require 'functions.php';
не факт что ошибка в 1 строке т.к мускул обращается сначала к первой вот и ругается.
тут надо db.php смотреть
и еще какая версия мускула там где работает и где нет
db.php
может там логин неверный
Тут только что-то с настройками мускула, если работает на других хостах, или версия....
А там рядышком не выдаётся сам запрос, который вызвал ошибку?
Если не выдаётся, то нужно найти то место, где он совершается, и сделать echo.
После этого, думаю, станет понятна причина ошибки.
Не посмотрев db.php, угадать в чём ошибка, не представляется возможным.
Кстати, у Вас есть ещё ошибка, не относящаяся к MySQL:
header('Content-Type: text/html; charset: windows-1251');
Вряд ли браузеры знают о существовании HTTP заголовка 'charset' ;)
Правильно будет:
header('Content-Type: text/html; charset=windows-1251');Кто может помочь (платно видимо) - отпишите в личку.
Я вот не знаю какие настройки мускула смотреть.
db.php
class OkiDb {
private $link;
private $prefix;
public function connect($host, $user, $pass, $dbname, $prefix = '', $names = null)
{
$this->link = mysql_connect($host, $user, $pass);
if (!$this->link) {
$this->dieError('Cannot connect to DB ' . mysql_error());
}
if (!mysql_select_db($dbname, $this->link)) $this->dieError('Cannot select DB');
if ($names != null) {
mysql_query('SET NAMES ' . $names, $this->link);
}
$this->prefix = $prefix;
}
private function dieError($msg = 'MySql Error')
{
die($msg . ': ' . mysql_error());
}
public function query($sql)
{
return mysql_query($sql, $this->link);
}
public function escape($str)
{
return mysql_real_escape_string($str, $this->link);
}
public function buildQuery($query, $args)
{
$i = 0;
if (!is_array($args)) $args = array($args);
while ($i < count($args) && ($pos = strpos($query, '?')) !== false) {
$repl = "'" . $this->escape($args[$i++]) . "'";
$query = substr_replace($query, $repl, $pos, 1);
}
return $query;
}
public function select($table, $cols = '*', $where = null, $order = null, $joins = null, $limit = null)
{
$sql = "SELECT $cols FROM {$this->prefix}$table";
if (is_array($where)) {
$sql .= ' WHERE ' . $this->buildQuery($where[0], $where[1]);
} else if ($where != null) {
$sql .= " WHERE $where";
}
if ($order != null) $sql .= " ORDER BY $order";
if ($limit != null) $sql .= " LIMIT $limit";
return $this->query($sql);
}
/**
* fetch all into associative array
* @return array
*/
public function fetchAll($table, $cols = '*', $where = null, $order = null, $joins = null, $limit = null)
{
$result = $this->select($table, $cols, $where, $order, $joins, $limit);
if ($result === false) $this->dieError('DB SELECT query failed');
$ret = array();
while (($row = mysql_fetch_assoc($result)) !== false) {
$ret[] = $row;
}
return $ret;
}
public function fetchRow($table, $cols = '*', $where = null, $order = null, $joins = null)
{
$result = $this->select($table, $cols, $where, $order, $joins, 1);
if ($result === false)
$this->dieError('DB SELECT query failed');
$ret = mysql_fetch_assoc($result);
return $ret;
}
public function fetchOne($table, $column = '*', $where = null, $order = null)
{
$row = $this->fetchRow($table, $column, $where, $order);
return $row !== false ? $row[$column] : false;
}
public function insert($table, array $data)
{
if (count($data) == 0) return false;
$fields = '(';
$values = 'VALUES (';
foreach ($data as $key => $value) {
$fields .= '`'.$key.'`,';
$values .= "'" . $this->escape($value, $this->link)."',";
}
$fields = substr($fields, 0, -1) . ')';
$values = substr($values, 0, -1) . ')';
$sql = "INSERT INTO {$this->prefix}$table $fields $values";
if ($this->query($sql) === false) return false;
return $this->insertId();
}
public function update($table, array $data, $where = null)
{
if (count($data) == 0) return false;
$set = '';
foreach ($data as $key => $value) {
$set .= "`$key`='" . $this->escape($value) . "',";
}
$set = substr($set, 0, -1); // remove last period (,)
$sql = "UPDATE {$this->prefix}$table SET $set";
if (is_array($where)) {
$sql .= ' WHERE ' . $this->buildQuery($where[0], $where[1]);
} else if ($where != null) {
$sql .= " WHERE $where";
}
return $this->query($sql);
}
public function insertId()
{
return mysql_insert_id($this->link);
}
}
- php тут не причем, нужно смотреть конфиг mysql или искать проблемный sql
А файл целиком?
а то <?php не закрыто
ошибка в mysql запросе в строке 1, а не в php в строке 1.
В приведенном Вами коде поменяйте
return mysql_query($sql, $this->link);
на
$t=mysql_query($sql, $this->link);
if(mysql_error( $this->link)) echo mysql_error( $this->link).'='.$sql;
return $t;
и запустите. Увидите не только саму ошибку, но и запрос который к ней привел - будет понятнее.
Если хотите - стучите в асю, платно можем решить вопрос, а не просто дать совет..
а какая версия mysql на сервере?