Ругаеться на синтаксис

Skyinfo

Новичок
В общем наваял скрипт из .xls выдерает построчно значения и забивает в базу + выводит (отчет- о то что обновлено, что вновь добавленнно).

и начинает ругаться когда, одна из выдергиваемых ячеек -пустая.

вот кусок вывода:

PHP:
<tr style="color: green">
<td>23342</td>
<td>FORCE Головка торц.3/4" 12-гран. 30мм (2)</td>
<td><b>9148</b></td>
<td>163.8</td>
<td>   1</td>
</tr>
<tr style="color: green">
<td>23343</td>
<td>FORCE Головка торц.3/4" 12-гран. 36мм (2)</td>
<td><b>139</b></td>
<td>175.95</td>
<td>   1</td>
</tr>
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 '    5)' at line 1
кусок скрипта

PHP:
//Цикл
//
for ($i = 1; $i <= $data->sheets[1]['numRows']; $i++) {
     if($data->sheets[1]['cells'][$i][9] != ""){
	if($cur_i == 0)
    
{$cur_i++;}

else
{
//Достаем из базы SKU	   
		$sql = "SELECT * FROM av_product WHERE sku = '".$data->sheets[1]['cells'][$i][2]."'";
		$cur_product_query = mysql_query($sql) or die('Query failed: ' . mysql_error());
		$cur_product = mysql_fetch_array($cur_product_query);

//Условие определяем является ли числом поле кол-во     
if(!is_numeric(trim($data->sheets[1]['cells'][$i][9])))
//Да
{$product_count = 5;}
else
//Нет
{$product_count = $data->sheets[1]['cells'][$i][9];}

//Если есть совпадения по SKU
		if
        ($cur_product['sku'] != ""){
		  
//Торговая наценка
$cena1 = 1.30; //До 100р. = 30%
$cena2 = 1.15; //До 1000р. = 15%
$cena3 = 1.08; //Всё остальное = 8%

//Потолок цен
$potolok = 100;
$potolok1 = 500;
$potolok2 = 1000;
$potolok3 = 3000;

//Логика цен
if ($price <= $potolok) {
$roznica=$cena1;
} 
elseif ($price <= $potolok2) {
$roznica=$cena2;
}
else  {
$roznica=$cena3;
} 

//Заносим 
$price = $data->sheets[1]['cells'][$i][8];

//Умножаем на коэффициент
$price1 = $price*$roznica;

//Если есть такой товар, то обновляем цену и кол-во.

$sql = "UPDATE av_product SET sku = '".$data->sheets[1]['cells'][$i][2]."',
        price = ".$price1.",
        quantity = ".$product_count ." 
        WHERE sku = '".$data->sheets[1]['cells'][$i][2]."',
        price = ".$price1.", 
        quantity = ".$product_count ."";
			mysql_query($sql) or die(mysql_error());
			echo '<tr style="color: green">';
        		echo '<td>'.$data->sheets[1]['cells'][$i][1].'</td>';
        		echo '<td>'.$data->sheets[1]['cells'][$i][5].'</td>';
        		echo '<td><b>'.$data->sheets[1]['cells'][$i][2].'</b></td>';
        		echo '<td>'.$price1.'</td>';
        		echo '<td>'.$data->sheets[1]['cells'][$i][9].'</td>';

        		echo '</tr>';
помогите решить с синтаксисом проблему или хотябы подскажите куда смотреть.
ЗЫ. если кому нужна будет реализация покажу.
 

Andkorol

Новичок
Выведи на экран готовый запрос, с подставленными значениями переменных – и посмотри, что в нем не так.
В твоем запросе нет скобок – а в ошибке она есть.
Значит, в одной из переменных присутствует какой-то мусор – нужно его найти и удалить.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Skyinfo
Я должен догадаться, откуда и в каком запросе у тебя взялось ' 5)'?
 

Skyinfo

Новичок


Выдерается построчно в порядке: номер, имя, цена, кол-во
Проблема во второй строчке (так как застревает на ней) , происходит из за пустой строчки.
Скрипт выдает ошибку при обновлении цены в mysql базе.

ЗАпрос выполняется:
PHP:
$sql = "UPDATE av_product SET 
        sku = '".$data->sheets[1]['cells'][$i][2]."',
        price = ".$price1.",
        quantity = ".$product_count ." 
        WHERE sku = '".$data->sheets[1]['cells'][$i][2]."';
			mysql_query($sql) or die(mysql_error());

А вот, чем обваливает скрипт.
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 ' 5)' at line 1
Забивая ручками все проходит нормально.

Может еще какую информацию дать?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Skyinfo
Выведи все запросы, посмотри, где там стоит твоя ошибка, как ее поправить. То есть echo $sql перед mysql_query($sql).
 

Skyinfo

Новичок
Skyinfo
Выведи все запросы, посмотри, где там стоит твоя ошибка, как ее поправить. То есть echo $sql перед mysql_query($sql).
PHP:
<td>ARIA Усилитель AD275A 2-канальный, 75Втх2</td>
<td><b>38180</b></td>
<td>1260</td>
<td>   2</td></tr>
SELECT * FROM av_product WHERE sku = '38181'UPDATE av_product SET sku = '38181', price = 1695, quantity =    2 WHERE sku = '38181'
<tr style="color: green"><td>32</td>
<td>ARIA Усилитель AD450A 4-канальный, 50Втх4</td>
<td><b>38181</b></td>
<td>1695</td>
<td>   2</td></tr>
SELECT * FROM av_product WHERE sku = '38182'UPDATE av_product SET sku = '38182', price = , quantity =    1 WHERE sku = '38182'
Ошибка запроса: 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 ' quantity =    1 WHERE sku = '38182'' at line 1root
 

Skyinfo

Новичок
Спасибо ребята, иногда просто не видишь ошибку под ногами, а дело то было всего лишь в кавычка которые надо было поставить)))))
Не правильный вариант был-
PHP:
 price = ".$price1.",
        quantity = ".$product_count ."
Правильный -
PHP:
 price = '".$price1."',
        quantity = '".$product_count ."'

НА будущее... может кому пригодиться, почитайте на досуге.

http://code.google.com/p/php-excel-reader/wiki/Documentation
 
Сверху