Как выполнить два запроса mysql как один в PHP/MYSQL?

Используйте sprintf и затем переводите десятичные точки в запятую:

before <- after <- 4
fmt <- sprintf("%%0%d.%df", before + after + 1, after)
transform(df, a = chartr(".", ",", sprintf(fmt, a)))

, давая:

          a
1 0002,5000
2 0003,5600
3 0004,5000

или записывая это с помощью dplyr:

library(dplyr)

before <- after <- 4
df %>%
  mutate(a = "%%0%d.%df" %>%
             sprintf(before + after + 1, after) %>% 
             sprintf(a) %>%
             chartr(".", ",", .))
[118 ] дает:

          a
1 0002,5000
2 0003,5600
3 0004,5000
29
задан Luiggi Mendoza 9 February 2016 в 14:37
поделиться

5 ответов

Обновление: По-видимому, возможно передать флаг в mysql_connect () . См. Выполнение нескольких запросов SQL в одном выражении с помощью PHP Тем не менее, любой текущий читатель должен избегать использования класса функций mysql_ и предпочитать PDO.

Вы не можете сделать это с помощью обычный MySQL-API в PHP. Просто выполните два запроса. Второй будет настолько быстрым, что это не будет иметь значения. Это типичный пример микрооптимизации. Не беспокойтесь об этом.

Для справки, это можно сделать с помощью mysqli и функции mysqli_multi_query .

32
ответ дан 28 November 2019 в 01:35
поделиться

С помощью SQL_CALC_FOUND_ROWS вы не можете.

Число строк, доступных через FOUND_ROWS (), является временным и не предназначено для того, чтобы быть доступным после оператора, следующего за оператором SELECT SQL_CALC_FOUND_ROWS .

Как кто-то заметил в вашем предыдущем вопросе, использование SQL_CALC_FOUND_ROWS часто медленнее, чем просто подсчет.

Возможно, вам лучше сделать это как подзапрос:

SELECT 
 (select count(*) from my_table WHERE Name LIKE '%prashant%') 
as total_rows,
Id, Name FROM my_table WHERE Name LIKE '%prashant%' LIMIT 0, 10;
3
ответ дан 28 November 2019 в 01:35
поделиться

Вам придется использовать расширение MySQLi, если вы не хотите выполнять запрос дважды:

if (mysqli_multi_query($link, $query))
{
    $result1 = mysqli_store_result($link);
    $result2 = null;

    if (mysqli_more_results($link))
    {
        mysqli_next_result($link);
        $result2 = mysqli_store_result($link);
    }

    // do something with both result sets.

    if ($result1)
        mysqli_free_result($result1);

    if ($result2)
        mysqli_free_result($result2);
}
3
ответ дан 28 November 2019 в 01:35
поделиться

Примерно так:

$result1 = mysql_query($query1);
$result2 = mysql_query($query2);

// do something with the 2 result sets...

if ($result1)
    mysql_free_result($result1);

if ($result2)
    mysql_free_result($result2);
1
ответ дан 28 November 2019 в 01:35
поделиться

На сайте PHP говорится, что несколько запросов НЕ разрешены (РЕДАКТИРОВАТЬ: Это верно только для расширения mysql. Mysqli и PDO допускают несколько запросов) , Так что вы не можете сделать это в PHP, НО, почему вы не можете просто выполнить этот запрос в другом вызове mysql_query (как пример Джона)? Это все равно должно дать вам правильный результат, если вы используете то же соединение. Также могут помочь mysql_num_rows .

1
ответ дан 28 November 2019 в 01:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: