2014-10-11 87 views
0

我想在列更多的数据(合并)添加到现有的字符串purchased防止Mysql的被覆盖的数据

我用这个PHP代码:

$id=$_GET["id"];  
$username=$_SESSION['username']; 
$sql="UPDATE `users` SET `purchased` = `purchased`.' $id' WHERE `username`='$username'"; 
mysql_query($sql); 

如果当前用户的purchased列包含价值0那么在这个查询后(id = 1)它应该变成

0 1但它覆盖了现有的数据并且变成了1我怎样才能加入这个(space)1对现有在我的MySQL列0没有覆盖任何东西,由刚刚加盟到现有的字符串

回答

0

解决通过让现有的价值和PHP将字符串连接

$id = $_GET["id"];  
$username = $_SESSION['username']; 
$sql = "SELECT `purchased` FROM `users` WHERE `username` = '".$_SESSION['username']."'"; 
$data = mysql_query($sql); 
while($row = mysql_fetch_row($data)) { 
    $ep = $row[0]; 
} 
$newData = ''.$ep.' '.$id.''; 
$sql="UPDATE `users` SET `purchased` = '$newData' WHERE `username`='$username'"; 
mysql_query($sql); 
+0

请在Core PHP编程中始终使用[PEAR](http://pear.php.net/manual/en/standards.php)编码标准。 – 2014-10-11 07:35:14

0

这就是答案:

$id = $_GET["id"];  
$username = $_SESSION['username']; 
try { 
    $dbh = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password); 
    $sth = $dbh->prepare('UPDATE `users` SET `purchased` = CONCAT(`purchased`,?) WHERE `username`=?'); 
    $sth->bindParam(1, $id, PDO::PARAM_INT); 
    $sth->bindParam(2, $username, PDO::PARAM_STR); 
    $sth->execute(); 
} catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 
+0

请在Core PHP编程中始终使用[PEAR](http://pear.php.net/manual/en/standards.php)编码标准。 – 2014-10-11 07:34:20