문제

를 사용하여 이 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();
.

자세한 정보 : http://www.php.net/manual/en/pdo.lastinsertid.php

다른 팁

당신은 혼합 PDO 일반 MySQL 기능입니다.문제입 mysql_last_insert 가 없 자원,그리고 그것이 0 을 반환한 거짓입니다.혼합하지 않는 PDO 일반 MySQL 기능입니다.

을 얻을 마지막으로 삽입 id PDO 려면 다음을 수행합니다.$dbh->lastInsertId()

http://php.net/manual/en/pdo.lastinsertid.php

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top