php mysql файл запроса

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

Мой запрос выглядит так:

SET @sql_text =
CONCAT ("SELECT
`table1`.`field1`,
`table2`.`field2`

FROM `table1`,`table2`

WHERE
`table1`.`field1`=`table2`.`field2`

into outfile '/pathtofolder/myresult-", DATE_FORMAT( NOW(), '%Y%m%d-%H:%i')
, ".csv'
FIELDS TERMINATED BY '|'
"    );

PREPARE s1 FROM @sql_text;
EXECUTE s1;

DROP PREPARE s1;

Теперь я, кажется, столкнулся с проблемой, пытаясь получить это в php. Моя попытка:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "databasename";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$sql = 'SET @sql_text =
CONCAT ("SELECT
`table1`.`field1`,
`table2`.`field2`

FROM `table1`,`table2`

WHERE
`table1`.`field1`=`table2`.`field2`

into outfile '/pathtofolder/myresult-", DATE_FORMAT( NOW(), '%Y%m%d-%H:%i')
, ".csv'
FIELDS TERMINATED BY '|'
"    );

PREPARE s1 FROM @sql_text;
EXECUTE s1;

DROP PREPARE s1;'

if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}

$conn->close();
?>

К сожалению, это не похоже на работу. Что я пропускаю?

0

Решение

Поскольку sql находится в одинарных кавычках, но содержит одинарные кавычки, вам нужно будет избегать их, используя обратную косую черту.

$sql = 'SET @sql_text =
CONCAT ("SELECT
`table1`.`field1`,
`table2`.`field2`

FROM `table1`,`table2`

WHERE
`table1`.`field1`=`table2`.`field2`

into outfile \'/pathtofolder/myresult-", DATE_FORMAT( NOW(), \'%Y%m%d-%H:%i\')
, ".csv\'
FIELDS TERMINATED BY \'|\'
"    );

PREPARE s1 FROM @sql_text;
EXECUTE s1;

DROP PREPARE s1;'
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]