2017-09-12 115 views
0

嗨,大家好,我有一個PHP的邏輯比較器的問題,當我使用ADOdb 因爲當我做一個例如CI的表中選擇時,resault永遠不會是NULL,我不能只需驗證,如果人在插入之前存在PHP與ADOdb邏輯compulators

CODE

<?php 
include('inc/php/adodb5/adodb.inc.php'); 
$db = ADONewConnection('mysql'); # eg. 'mysql' or 'oci8', 'postgresql' 
$db->debug = true; 

// Establecer datos para comunicarse con el Gestor de Bases de Datos. 
$server = "localhost"; 
$user  = "x"; 
$password = "x"; 
$database = "xs"; 

// Traemos cositas del formulario de index.php 
//$user=$_GET["username"]; 
$fecha = date('Y-m-d H:i:s'); 
$ci = $_GET["username"]; 


$db->Connect($server, $user, $password, $database) or die ("Se pudrio todo !"); 

$sql = "SELECT ciInterno_Persona_ciPersona FROM internos WHERE ciInterno_Persona_ciPersona = '".$ci."';"; 
       $rs = $db->Execute($sql); 
       /////////////////////////  
        if($rs){ 
         $sql = "INSERT INTO registrointernos VALUES ('', '0', '" .$fecha."', '".$ci."')"; 
         $db->Execute($sql); 
             }else{ 
               echo '<script language="javascript">alert("CI doesn't exist");</script>'; 
              } 
$rs->Close(); 
$db->Close(); 

?> 

的問題是,RS的結果始終是真實的,即使當我把不存在於表中一個CI

預先感謝您的幫助

回答

0

這是因爲$db->Execute($sql);返回派生類ADORecordSet如果查詢成功執行(文檔here)。

你必須做一些事情,如:

$rs = $db->Execute($sql); 
$rows = $rs->GetRows(); 
if (!empty($rows)) { 
    // ... 
} else { 
    // ... 
} 

或者你可以使用$db->GetRow($sql)代替$db->Execute($sql)

+0

但我不想連續,我只想要一個具體的價值,如果它存在,必須是ci,如果不存在,只是沒有 – WhySoBizarreCode

+0

@CodeSoBizarre你可以嘗試' GetCol'具有極限1,但它也將是數組...我還沒有在ADODB中找到函數,它只返回1個標量值,所以你必須處理數組( –

+0

),你是對的,謝謝你的awnsers。解決我在if語句中放置if($ rs-> fields(0))的問題,所以它現在可以工作了;)。 – WhySoBizarreCode

0

解決了,謝謝你的答案。

CODE ********

$sql = "sqlSentence"; 
$rs = $db->Execute($sql); 
if($rs->fields(0)){ 
} 

的解決方案是,你必須採取什麼樣的SQL回報,選擇的位置,做邏輯比較。 所以它保存在$ rs中,但$ rs就像一個數組,所以你必須把我的情況下的位置0。和它的工作完美