2014-10-15 2 views
1

저는 PHPWordPress에 초보자입니다. 이 접근법은 나를 위해 ASP.NET에서 잘 작동했지만 여기에 두 가지 쿼리가 작동하지 않습니다. 내가 첫 번째 것을 언급 할 때, 두 번째 것 (Insertion)은 잘 동작한다.두 번째 쿼리는 PHP mysql에서 실행되지 않습니다

$dbhostname="111.1.11.111"; 
$dbusername="db_userName"; 
$dbpassword="mypassword"; 

$con=mysqli_connect($dbhostname,$dbusername,$dbpassword,"db_name"); 

if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

이메일이 존재하는지 여부를 확인 하시겠습니까?

BEGIN 
    SELECT 1 as emailstatus FROM userinfo WHERE email= p_email; 
END 

둘째

$sql="CALL Select_ConfirmEmailExistance('[email protected]')"; 

    $containsResult=0; 
if ($result=mysqli_query($con,$sql)) 
{ 
// Get field information for all fields 
while ($fieldinfo=mysqli_fetch_assoc($result)) 
{ 
    if (isset($fieldinfo)) { 
     $containsResult=1;// Email Exists 
    } 
} 
mysqli_free_result($result); 

if ($containsResult==0) { // In case email does not exists enter it. 

    $sql="CALL insert_Userinfo('abc','def','[email protected]','mnop')"; 
    if ($result=mysqli_query($con,$sql)) 
    { 
     $data; 
     while ($fieldinfo=mysqli_fetch_assoc($result)) 
     { 
      $data[]=$fieldinfo; 
     } 
    } 
    } 
    print_r($data); 
    } 

mysqli_close($con); 

첫 번째 스토어 Procdure는 절차

그것은 매우 간단합니다
INSERT INTO `userinfo` (
    `first_name`, 
    `last_name`, 
    `email`, 
    `password` 
) 
VALUES 
    (
     `FName`, 
     `LName`, 
     `Email`, 
     `Pass` 
    ); 

SELECT 
    user_id 
FROM 
    userinfo 
ORDER BY 
    user_id DESC 
LIMIT 1; 
+0

http://codex.wordpress.org/Class_Reference/wpdb – codepixlabs

+0

@ pr1nc3 내가 사용하고있는 데이터베이스는 WordPress 데이터베이스가 아닙니다. 그것은 다른 것입니다. –

+0

여기에 저장 절차 코드를 제공하십시오 –

답변

2

다음은 데이터를 가져 오기 위해 쿼리 클래스를 만들 때 말한 내용입니다. 이것은 단순한 것일 뿐이지 만 꽤 효과적이며 꽤 강력해질 수 있습니다.

class DBEngine 
    { 
     public $con; 
     public function __construct($host="111.1.11.111",$db = "dbname",$user="db_userName",$pass="mypassword") 
      { 
       try { 
         $this->con = new PDO("mysql:host=$host;dbname=$db",$user,$pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); 
        } 
       catch (Exception $e) { 
         return 0; 
        } 
      } 

     // Simple fetch and return method 
     public function Fetch($_sql) 
      { 
       $query = $this->con->prepare($_sql); 
       $query->execute(); 

       if($query->rowCount() > 0) { 
         while($rows = $query->fetch(PDO::FETCH_ASSOC)) { 
           $array[] = $rows; 
          } 
        } 

       return (isset($array) && $array !== 0 && !empty($array))? $array: 0; 
      } 

     // Simple write to db method 
     public function Write($_sql) 
      { 
       $query = $this->con->prepare($_sql); 
       $query->execute(); 
      } 
    } 

// Create an instance of the engine 
$query   = new DBEngine(); 
// Query 1 will return an array or false (0) 
$call1   = $query->Fetch("CALL Select_ConfirmEmailExistance('[email protected]')"); 
// Assign your true/false 
$containsResult = ($call1 !== 0)? 1:0; 
// Run second query and return array or false (0) 
if($containsResult == 0) 
    $data = $query->Fetch("CALL insert_Userinfo('abc','def','[email protected]','mnop')"); 
// Display returned result 
print_r($data); 
+0

코드가 꽤 정교합니다. 정말 고맙습니다. 그러한 도움에 대해 대단히 감사합니다. –

+0

문제 없습니다. 사실, 그것은 처음 보면 정교 해 보입니다. 설정 파일에'DBEngine' 클래스를 넣었거나 데이터베이스 커넥션을 저장하고있는 곳이라면 원하는 곳에서 동시에 실행할 수 있습니다. 그냥 테스트하고 나는 그것을 좋아할 것이라고 보장합니다! 간단한'select * from whatevertable' SQL을 실행하고 어떻게 동작하는지보십시오. – Rasclatt

1

을 저장. 코드는 괜찮지 만 두 개의 함수를 생성하고 코드 대신 함수를 호출하면됩니다.

관련 문제