0

私はばかげて愚かなことをしていますか?こんにちはあなた(2)まですべてがうまくいく

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;
4

1 に答える 1

0

の戻り値をチェックしてmysqli_stmt_execute、クエリの実行中にエラーが発生したかどうかを確認します。

ただし、問題は、このクエリをすでに実行していて、それ以降、再度実行する前にパラメータをバインドしていないことだと思います。

于 2013-03-01T23:23:19.420 に答える