문제
를 사용하여 이 php 코드:
try{
$dbh = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
// INSERT CLEAN DATA INTO TABLE…
$sth = $dbh->prepare("
INSERT INTO Fan(fanNm,fanEmail,fanPass,fanDynamSalt)
VALUES('$userName','$userEmailAddress','$userPassword','$dynamSalt')"
);
$sth->execute();
////////////////////////////////////////////////////////////////////
## Set Session Var for this PK ID in Fan table that is being created ##
////////////////////////////////////////////////////////////////////
$_SESSION['newUserSessID'] = mysql_insert_id();
echo "<strong style='color:#fff;'>".$_SESSION['newUserSessID']."</strong>";
} //try
catch(PDOException $e){
echo "Oops, We're experiencing an error.";
file_put_contents('/PDODBConnectionErrors.txt', $e->getMessage(), FILE_APPEND);
} //catch
삽입 정밀한 데이터베이스로,하지만 난 사용 echo "<strong style='color:#fff;'>".$_SESSION['newUserSessID']."</strong>";
에코하는 값과 항상 그것을 반환합니다.
심지어는 실행하는 경우:
SELECT LAST_INSERT_ID( )
FROM Fan
LIMIT 0 , 30
그것은 나에게 다음과 같이 출력
0
0
(있기 때문에 두 행에서 데이터베이스 테이블)
누구?
해결책
PDO의 일부가 아닌 PDO (이 인스턴스에서 데이터베이스와 상호 작용하는 데 사용하는 것)가 아닌 경우 mysql_insert_id
를 사용해서는 안됩니다.
대신 PDO::lastInsertId()
를 사용하십시오.
$_SESSION['newUserSessID'] = $dbh->lastInsertId();
.
다른 팁
당신은 혼합 PDO
일반 MySQL
기능입니다.문제입 mysql_last_insert
가 없 자원,그리고 그것이 0 을 반환한 거짓입니다.혼합하지 않는 PDO
일반 MySQL
기능입니다.
을 얻을 마지막으로 삽입 id PDO 려면 다음을 수행합니다.$dbh->lastInsertId()
제휴하지 않습니다 StackOverflow