2012-04-19 6 views
1

PHP 백엔드를 사용하고 있습니다. MySQLi 객체는 prepared statement를 사용합니다. 그러나 다음과 같은 쿼리가 필요합니다.IF 조건 삽입, MySQL Do 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에서는이 작업을 수행 할 수 없습니다. 일반적으로 PHP와 같은 'if'부분을 수행하는 언어가 필요합니다. 그러나 MySQL에서 [저장 프로 시저] (https://duckduckgo.com/?q=mysql+stored+procedure)로 할 수 있습니다 - 당신이 염두에 두었던 것입니까? – 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

희망에 감사 드리며 위로 투표 해 주실 수 있습니다. –