2013-03-01 22 views
0

我在做一些荒謬可笑的事情嗎? (2)mysqli_stmt_fetch()。條目存在,但沒有打印

while(mysqli_stmt_fetch($ selectCust))將不會執行。 我經歷了一切的一步一步,並出現在數據庫中的條目。 如果條目是原創的,if語句將正確執行。

我在mysql中完成了這個完整的表單,並且它工作正常。 我只是無法獲取與預處理語句一起工作,所以我確定它不是 是邏輯錯誤。

Creating prepared statements and binding params 
$insertCust = mysqli_prepare($mysqli, 
"INSERT INTO `mp434`.`CUSTOMERS` (
`CUST_ID`, 
`NAME` , 
`EMAIL` , 
`PASSWORD` , 
`ADDRESS` 
) 
VALUES (
?, ?, ?, ?, ? 
)"); 

mysqli_stmt_bind_param($insertCust, 'sssss', $null, $name, $email, $password, $address); 

$selectCust = mysqli_prepare($mysqli, 
"SELECT * 
FROM `CUSTOMERS` 
WHERE `NAME` LIKE ? 
AND `EMAIL` LIKE ? 
AND `PASSWORD` LIKE ? 
AND `ADDRESS` LIKE ?"); 

mysqli_stmt_bind_param($selectCust, 'ssss', $name, $email, $password, $address); 


//Find num Rows to see if cust is preexisting 
mysqli_stmt_execute($selectCust); 
mysqli_stmt_store_result($selectCust); 
$numRows = mysqli_stmt_num_rows($selectCust); 
mysqli_stmt_close($selectCust); 

//if preExisting gives Cust ID 
//if not fetches custId 

if ($numRows == 0) 
{ 
mysqli_stmt_execute($insertCust); 
mysqli_stmt_store_result($insertCust); 
$custID = mysqli_stmt_insert_id($insertCust); 
mysqli_stmt_close($insertCust); 
} 
else 
{ 
print "hello1"; 
mysqli_stmt_execute($selectCust); 
mysqli_stmt_bind_result($selectCust, $a,$b,$c,$d,$e); 
print "hello You2"; 
while (mysqli_stmt_fetch($selectCust)) 
    { 
     print "hello You3"; 
     print "results are: $custID $b $c $d $e <br>"; 
    } 

mysqli_stmt_close($selectCust); 
} 
echo $custID; 
echo $numRows; 

回答

0

檢查返回值mysqli_stmt_execute以查看執行查詢是否存在錯誤。

但是我認爲問題在於你已經運行了這個查詢,並且在再次運行之前沒有綁定參數。

+0

你是絕對正確的。我重新準備並反彈,並且完美運作。謝謝,我以前從未使用過mySqli。 – 2013-03-02 01:06:17