Intereting Posts
Как сохранить php-файл как расширение .php или .html? Laravel – Динамические отношения, использующие hasManyThough () и уникальное слияние Как вставить французские символы в таблицу mySQL DB? Woocommerce: пользовательская цена, основанная на пользовательском вводе Войти с помощью Facebook SDK PHP – Пользователь должен дважды войти в систему fwrite () не разрешено, но phpinfo () говорит, что это должно быть Получить имена столбцов и значения для цикла PHP Преобразование php-массива в строку csv почему невозможно загрузить объект внутри другого? PHP – Неустранимая ошибка: вызов функции-члена bind_param () Не удалось подключиться к серверу MySQL с использованием PDO Каковы основные различия между ASP.net и PHP? Столбец 'id' в списке полей неоднозначен в YII PHP: поиск запроса, если электронная почта уникальна, тогда, если это так, запрос на добавление записи в базу данных Ошибка при отправке электронной почты с помощью phpmailer – Ошибка при передаче SMTP-сообщений: данные не принимаются

сделать временную таблицу и выбрать ее

Я получаю сообщение об ошибке «uneclared variable: temp», когда я запускаю этот …

<?php $maketemp = "CREATE TEMPORARY TABLE temp(`itineraryId` int NOT NULL, `live` varchar(1), `shipCode` varchar(10), `description` text, `duration` varchar(10), PRIMARY KEY(itineraryId))"; mysql_query( $maketemp, $connection ) or die ( "Sql error : " . mysql_error ( ) ); $inserttemp = "SELECT live, id AS itineraryId, ship AS shipCode, description AS description, duration AS length FROM cruises WHERE live ='Y' INTO temp"; mysql_query( $inserttemp, $connection ) or die ( "Sql error : " . mysql_error ( ) ); $select = "SELECT intineraryId, shipCode, description, duration FROM temp"; $export = mysql_query ( $select, $connection ) or die ( "Sql error : " . mysql_error( ) ); 

Есть идеи ?

Пожалуйста, не используйте функции mysql_* в новом коде . Они больше не поддерживаются и официально устарели . См. Красную рамку ? Узнайте о подготовленных инструкциях и используйте PDO или MySQLi – эта статья поможет вам решить, какой из них. Если вы выберете PDO, вот хороший учебник .


Этот код должен работать:

 <?php $maketemp = " CREATE TEMPORARY TABLE temp_table_1 ( `itineraryId` int NOT NULL, `live` varchar(1), `shipCode` varchar(10), `description` text, `duration` varchar(10), PRIMARY KEY(itineraryId) ) "; mysql_query($maketemp, $connection) or die ("Sql error : ".mysql_error()); $inserttemp = " INSERT INTO temp_table_1 (`itineraryId`, `live`, `shipCode`, `description`, `duration`) SELECT `id`, `live`, `ship`, `description`, `duration` FROM `cruises` WHERE `live` = 'Y' "; mysql_query($inserttemp, $connection) or die ("Sql error : ".mysql_error()); $select = " SELECT `itineraryId`, `shipCode`, `description`, `duration` FROM temp_table_1 "; $export = mysql_query($select, $connection) or die ("Sql error : ".mysql_error()); 

Я думаю, вы собираетесь делать больше вещей с помощью временной таблицы или просто играете с ней, но если не знать, что весь код можно суммировать:

 <?php $query = " SELECT `id` AS 'itineraryId', `ship`, `description`, `duration` FROM `cruises` WHERE `live` = 'Y' "; $export = mysql_query($query, $connection) or die ("Sql error : ".mysql_error()); 

Второй запрос неверен.

Из ссылки –

MySQL Server не поддерживает SELECT … INTO TABLE Расширение Sybase SQL. Вместо этого MySQL Server поддерживает INSERT INTO … SELECT . стандартный синтаксис SQL, что в основном одно и то же.

Попробуйте это вместо этого –

 INSERT INTO temp SELECT live , id AS itineraryId , ship AS shipCode , description AS description , duration AS length FROM cruises WHERE live = 'Y' 

Мне нравится использовать heredoc, чтобы помочь мне построить встроенный sql-запрос (только для того, чтобы помочь сделать любую тонкую ошибку); поэтому ваш первый запрос будет выглядеть примерно так:

 $maketemp =<<<s CREATE TEMPORARY TABLE temp( `itineraryId` int NOT NULL, `live` varchar(1), `shipCode` varchar(10), `description` text, `duration` varchar(10), PRIMARY KEY(itineraryId)); s; 

Затем, если вы хотите исправить второй запрос, не указав поля таблицы, в которую вы хотите вставить записи, вы должны указать поля в том же порядке .

На этот раз просто запрос:

 INSERT INTO temp SELECT id, live, ship, description, duration FROM cruises WHERE live = 'y'; 

И последнее, что касается временной переменной, – это: Посмотрите часть о ее видимости. Вы можете использовать ключевое слово TEMPORARY при создании таблицы. Таблица TEMPORARY видна только для текущего соединения и автоматически отбрасывается при закрытии соединения. http://dev.mysql.com/doc/refman/5.5/en/create-table.html

Это означает следующее: когда вы напрямую подключаетесь к MySQL, например, через интерфейс командной строки, например:

 mysql> #our query here line-by-line 

Затем вы по существу используете одно и то же соединение через все свои многочисленные запросы, пока активен ваш сеанс.

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

Попробуйте выполнить все запросы, отправьте все это в рамках выполнения одной команды / запроса.

Удачи.