Reputation: 2817
I am using the bellow query to update but now I tried to change it to pdo and it failed to work Please any help will be appreciated
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'])."'");
}
}
Here is what I tried with 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();
}
}
?>
Upvotes: 0
Views: 245
Reputation: 171
$stmt = $db->prepare("UPDATE site_user SET dateupdated=now(), ip=? WHERE username=?");
$stmt->execute(array($ip, $_SESSION['username']));
$affected_rows = $stmt->rowCount();
where $db
is your connection
again: A great tutorial
Upvotes: 3
Reputation: 17013
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();
}
}
Upvotes: 2
Reputation: 157895
First, connect somewhere in a bootstrap/config file:
$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);
then, run your query
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']));
}
}
Make sure that all variables you're using have proper values (var_dump($_SESSION)
is enough)
Upvotes: 5
Reputation: 4370
// 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']);
Upvotes: 5