-1

这是我在页面顶部的内容,从数据库中的表中收集信息:

include_once '../assets/database.php';
$a = $_GET['a']; 
$username = $_SESSION['username'];
$user_q = $db->prepare("SELECT * FROM `users` WHERE `username` = '$username'");
$user_q->execute();
$user_i = $user_q->fetch();

$aboutQ = $db->prepare("SELECT * FROM `info` WHERE uid = :id");
$aboutQ->execute(array(':id' => $user_i['id']));
$about = $aboutQ->fetch();

$about_ex = $db->prepare("SELECT * FROM `info` WHERE uid = :uid");
$about_ex->execute(array(':uid' => $user_i['id']));
$aboutRow = $about_ex->rowCount();

和底部查询,创建新行或更新现有行,具体取决于用户是否已经在表中有一行:

if($a === "post") {
$motto = $_POST['motto'];
$bio = stripslashes($_POST['bio']);
$grade = $_POST['grade'];
$sex = $_POST['sex'];
$phone = $_POST['phone'];
$aboutUid = $_POST['uid'];
if($aboutRow == 0) {
$q = $db->prepare("INSERT INTO `info` (motto, bio, grade, sex, favevent, position, phone, hours, uid) VALUES (:motto, :bio, :grade, :sex, null, null, :phone, null, :uid)");
$q->bindParam(':motto', $motto);
$q->bindParam(':bio', $bio);
$q->bindParam(':grade', $grade);
$q->bindParam(':sex', $sex);
$q->bindParam(':phone', $phone);
$q->bindParam(':uid', $aboutUid);
$q->execute();
}
else {
$q = $db->prepare("UPDATE `info` SET motto=?, bio=?, grade=?, sex=?, favevent=?, position=?, phone=? hours=? WHERE uid=?");
$q->execute(array($motto,$bio,$grade,$sex,null,null,$phone,null,$aboutUid));
}
header("Location: ../members");
exit;
} 

它没有给我一个错误 - 但每次我执行它时都没有任何反应。

4

1 回答 1

1

是的,您遇到了 SQL 语法错误:

$q = $db->prepare("UPDATE ... position=?, phone=? hours=? WHERE uid=?");
                                                 ^-- missing comma

由于您说没有显示错误,因此您可能没有在启用异常的情况下运行,因此您绝对必须检查 DB 调用的返回值并检查布尔值是否为 false。

于 2013-06-19T03:15:43.210 回答