2012-04-19 2 views
1

Я использую PHP-сервер, с объектами MySQLi для использования подготовленных операторов. Тем не менее, у меня есть проблема, мне нужно запрос типа:Вставить IF Condition, ELSE Do Nothing, MySQLi

IF (SELECT count(*) FROM table <= 3) 
    INSERT INTO table2 VALUES(5,2) 
// dont do anything if (SELECT count(*) FROM table > 3) 

Это дает синтаксическую ошибку в начале и не может понять, что не так?

+1

Ваш вопрос не имеет абсолютно никакого смысла. Можете ли вы попробовать и выразить свою проблему по-другому? – liquorvicar

+0

@liquorvicar здесь вы идете – Mustafa

+0

Вы не можете сделать это в обычном SQL - вам обычно нужен язык для части «if», такой как PHP. Однако вы можете использовать [хранимые процедуры] (https://duckduckgo.com/?q=mysql+stored+procedure) в MySQL - это то, что вы имели в виду? – halfer

ответ

3

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

Перейдите на страницу 19.2. Using Stored Routines (Procedures and Functions) и узнайте те трюки, похожие на PL/SQL. Вам будет намного легче справляться с проблемами, если у вас есть несколько запросов, которые зависят друг от друга.

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

Нечто подобное (синтаксис может быть из управления здесь - только пример):

CREATE PROCEDURE myProcedure(IN myCap INT) 
BEGIN 
    DECLARE rowCount INT; 
    SELECT count(*) FROM table INTO rowCount; 
    IF rowCount <= myCap THEN 
    INSERT INTO [...] 
    END IF; 
END; 
3
$query = mysql_query('SELECT COUNT(*) AS num FROM `myTable`'); 
$row = mysql_fetch_assoc($query); 
$total = $row['num']; 
if($total <= 3) 
{ 
    // Insert statament 
} 
+0

Я искал решение для одного запроса, но, похоже, я собираюсь пойти с этим. – Mustafa

+1

Надеюсь, я мог бы вам помочь и поблагодарить за голосование :-) –

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