2016-03-07 29 views
0

因此,即时通讯这一奋斗2天,我还没有看到谷歌的任何例如有关,它的作品,所以我想它不工作是这样的:插入MySQL数据库其中username =:用户名

$steamusername = "xx"; 
$uname = $_SESSION['username']; 
$sql1 = "INSERT INTO users (steamusername) VALUES (:steamusername) WHERE :username = username"; 

$query = $conn->prepare($sql1); 
$result = $query->execute(array(':steamusername'=>$steamusername, ':username'=>$uname)); 

它不会给出任何错误,但它也不会将其放入数据库中。

我真的不知道我怎么可以让它它进入用户表,我也试图更新字段:

$sql1 = "UPDATE users SET steamusername = :steamusername WHERE username = :username"; 
$stmt1 = $conn->prepare($sql1); 
$stmt1->bindParam(':username', $uname); 
$stmt1->bindValue(':steamusername', $steamusername); 
$stmt1->execute(); 

有谁知道解决的办法?提前致谢!

+1

想想INSERT .... WHERE以及如何工作 – Mihai

+0

其实它可能会给出错误。你不知道,因为你没有检查一个。尝试'if(!($ stmt1 = $ conn-> prepare($ sql1))){throw new Exception($ stmt1-> error); }'和'if($ stmt1-> execute()){抛出新的异常($ stmt1-> error); }' – OscarJ

回答

1

INSERT用于创建新记录,您要做的是更新当前记录。您需要使用一个UPDATE查询,如下所示:

$query = $conn->prepare("UPDATE users SET steamusername = :steamusername WHERE username = :username"); 
$query->execute(array(':steamusername' => $steamusername, ':username' => $uname)); 

请注意,我们传递参数给​​函数作为数组。

+0

修正了这个问题,我还在$ stmt-> bindvalue一个输入错误,我有$ stm1t:D谢谢:D –