2014-12-11 2 views
0

Я использую запрос mysql в phpmyadmin, он работает правильно.ошибка mysql: У вас есть ошибка в синтаксисе SQL;

SET @runtot=0; 
 
SELECT p_reference, p_id, p_description, (@runtot := @runtot + p_quantity) AS runningTotal 
 
FROM (
 
    SELECT p_reference, p_id, p_description, p_quantity 
 
    FROM product_table 
 
    WHERE p_description = 'product_1' AND p_quantity <= 21000 
 
    ORDER BY p_reference 
 
) AS l 
 
WHERE @runtot + p_quantity <= 21000;

, но у меня есть проблема, когда используется в файле PHP, Вы имеете ошибку в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи 'SELECT p_reference, p_id, p_description, (@runtot: = @runtot + p_quantity) AS ру' в строке 2

Этот исходный код PHP

<?php 

$connect = mysql_connect("localhost", "root", ""); 
mysql_select_db("datatest"); 

$query = mysql_query("SET @runtot=0; 
SELECT p_reference, p_id, p_description, (@runtot := @runtot + p_quantity) AS runningTotal 
FROM (
    SELECT p_reference, p_id, p_description, p_quantity 
    FROM product_table 
    WHERE p_description = 'product_1' AND p_quantity <= 21000 
    ORDER BY p_reference 
) AS l 
WHERE @runtot + p_quantity <= 21000"); 

if($query === FALSE){ 
      die(mysql_error()); 
    } 

while($data = mysql_fetch_assoc($query)){ 

echo $data['p_reference']." ".$data['p_quantity']; 
} 

?> 

И эТО ИСТОЧНИК СОЗДАТЬ таблицу продукта

CREATE TABLE IF NOT EXISTS `product_table` (
    `p_id` int(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, 
    `p_description` varchar(50) NOT NULL, 
    `p_reference` varchar(25) NOT NULL, 
    `p_location` varchar(25) NOT NULL, 
    `p_quantity` int(11) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

INSERT INTO `product_table` (`p_id`, `p_description`, `p_reference`, `p_location`, `p_quantity`) VALUES 
(1, 'Product_1', '1A00001', 'AP07', 7000), 
(2, 'Product_1', '1A00001', 'AF05', 6000), 
(3, 'Product_1', '1A00233', 'DS07', 7000), 
(4, 'Product_1', '1A00233', 'SD10', 5000), 
(5, 'Product_1', '1A00001', 'YB12', 7000), 
(6, 'Product_1', '1A00001', 'AN01', 7000), 
(7, 'Product_1', '1A00001', 'AP04', 7000), 
(8, 'Product_1', '1A00245', 'AP01', 7000), 
(9, 'Product_1', '1A00001', 'QD01', 7000), 
(10, 'Product_1', '1A00001', 'SC01', 7000); 
+0

Не используйте фрагменты с PHP. Используйте их только для JavaScript, HTML и CSS – SuperDJ

+1

с помощью mysql_error(), чтобы узнать, в чем проблема. Кроме того, рассмотрите возможность использования mysqli_ *, поскольку mysql_ * устарел. – Typoheads

+0

'mysql_query' возвращает false, потому что ему не понравился ваш запрос. вы пытаетесь экстраполировать данные из булева. – Flosculus

ответ

1

Ваш запрос неправильно. Пожалуйста, повторите свой запрос перед выполнением и запустите свой запрос в phpmyadmin или аналогичном.

--UPDATE--

В вашем заявлении есть больше чем один запрос, сцепляются точкой с запятой. Вы не можете выполнить несколько запросов в mysql_query().

Для этого вы должны использовать функцию расширения php msqli mysqli_multi_query().

+0

Я излагаю свой запрос в phpmyadmin, это правильно но в файле php у меня проблема – phptraining

+0

@phptraining, пожалуйста, проверьте обновление. – isa

+0

спасибо за вашу помощь Я использую mysqli_multi_query(), это очень эффектно – phptraining

0

Я бы рекомендовал попытаться указать точку, где есть ошибка. С лицевой стороны ваш SQL выглядит отлично, но сначала выполняйте его непосредственно с базой данных.

Я вижу, что у вас нет чека на mysql_connect. простая проверка, например if(!$connect) { die(mysql_error()); }, подтвердит правильность соединения. Ваш выход Ошибка булева потому, что нулевое или ложное значение возвращается либо из mysql_connect или mysql_query

Как Typoheads предложил в комментариях, используйте mysqli библиотеку вместо этого как mysql амортизируется в последнем PHP

+0

Я извиняю свой запрос в phpmyadmin, это правильно, но в файле php У меня проблема – phptraining

Смежные вопросы