0

以下のクエリを使用して更新していますが、pdoに変更しようとしましたが、機能しませんでした。助けていただければ幸いです。

 function updateonlinesession(){            
    if(isset($_SESSION['username']['id'])){
    $uid = $_SESSION['username']['id'];
    $page = $_SERVER['REQUEST_URI'];
    $ip = $_SERVER['REMOTE_ADDR'];
    $username = $_SESSION['logged'];

    mysql_query("UPDATE site_user SET dateupdated  = now(),ip = '$ip' WHERE 
    username = '".mysql_real_escape_string($_SESSION['username'])."'"); 
    }

    }   

これが私がpdoで試したことです

function updateonlinesession(){         
if(isset($_SESSION['username']['id'])){
$uid = $_SESSION['username']['id'];
$page = $_SERVER['REQUEST_URI'];
$ip = $_SERVER['REMOTE_ADDR'];
$username = $_SESSION['logged'];

$update = ("UPDATE site_user SET dateupdated  = now(),ip = '$ip' WHERE 
username = '".($_SESSION['username'])."'");
$sth_update= $con->prepare($update);
$sth_update->execute();
}

}

?>
4

4 に答える 4

5
// connetion
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// query
$sql = "UPDATE site_user SET dateupdated = NOW(), ip = ?
        WHERE username = ?";
$q = $conn->prepare($sql);
$q->execute(array($ip, $_SESSION['username']);
于 2013-02-26T15:45:46.173 に答える
5

まず、bootstrap/config ファイルのどこかに接続します。

$dsn = 'mysql:dbname=test;host=localhost;charset=utf8';
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn, $user, $pass, $opt);

次に、クエリを実行します

function updateonlinesession(){
    global $pdo;
    if(isset($_SESSION['username']['id'])){
        $sql = "UPDATE site_user SET dateupdated=now(),ip=? WHERE username=?"; 
        $pdo->prepare($sql);
        $pdo->execute(array($_SERVER['REMOTE_ADDR'], $_SESSION['logged']));
    }
}

使用しているすべての変数に適切な値があることを確認してください (var_dump($_SESSION)で十分です)

于 2013-02-26T15:46:39.383 に答える
3
$stmt = $db->prepare("UPDATE site_user SET dateupdated=now(), ip=? WHERE username=?");
$stmt->execute(array($ip, $_SESSION['username']));
$affected_rows = $stmt->rowCount();

$dbあなたのつながりはどこですか

繰り返します:素晴らしいチュートリアル

于 2013-02-26T15:47:33.840 に答える
2
function updateonlinesession(){
    if(isset($_SESSION['username']['id'])){
        $uid = $_SESSION['username']['id'];
        $page = $_SERVER['REQUEST_URI'];
        $ip = $_SERVER['REMOTE_ADDR'];
        $username = $_SESSION['logged'];

        //Establish your PDO object.
        $pdo = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");

        //Prepare your statement.
        $stmt = $pdo->prepare("UPDATE site_user SET dateupdate = now(), ip = ? WHERE username = ?");
        $stmt->execute(array(
            $ip,
            $_SESSION['username']
        ));
        $stmt->closeCursor();
    }
}
于 2013-02-26T15:46:48.910 に答える