我正在开发一款应用。我发布了一些应用程序,但我对PHP的经验有限。这个应用程序使用mysql数据库和PHP脚本将数据从应用程序传递到数据库。我已经想出如何使用POST从应用程序的输入字段中获取数据到数据库,但由于某种原因我无法弄清楚如何将在php中创建的变量传递给数据库,即不使用POST 。
我遇到问题的变量是user_id变量。我将在registration.php脚本中创建它,该脚本还通过POST传递来自应用程序的输入。这是代码的相关部分。一切正常,但user_id
变量永远不会进入数据库(即列总是显示'0')。
编辑:在数据库中,user_id
列是INT(11)类型。
//I have a whole script prepared for creating the unique user_id, but to keep it simple for
// testing, I'm just using '0000000'.
// This part doesn't work.
$query = "INSERT INTO users (user_id) VALUES ('0000000')";
mysql_query($query);
// everything from here down works:
$query = "INSERT INTO users (username, password, email, firstname, lastname) VALUES ( :user, :pass, :email, :firstname, :lastname)";
$query_params = array(
':user' => $_POST['username'],
':pass' => $_POST['password'],
':email' => $_POST['email'],
':firstname' => $_POST['firstName'],
':lastname' => $_POST['lastName'],
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch (PDOException $ex) {
$response["success"] = 0;
$response["message"] = "Failed to run query: " . $ex->getMessage();
die(json_encode($response));
}
答案 0 :(得分:2)
mysql_query
不是您在下面的工作代码中使用的PDO类的一部分。
使用PDO类也可以执行该语句。
$query = "INSERT INTO users (user_id) VALUES (:uid)";
$query_params = array(
':uid' => '0000000'
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch (PDOException $ex) {
$response["success"] = 0;
$response["message"] = "Failed to run query: " . $ex->getMessage();
die(json_encode($response));
}
你也很好奇为什么你说你要插入&00; 000000'结果总是0 - 这是有道理的。
答案 1 :(得分:0)
对于有同样问题的人,评论和回答是正确的...我有两个问题。首先,' 0000000'被视为' 0' 0当处理INT数据类型(DUH!)时,我的数据库当然总是接收' 0'。其次,mysql_query
不是我正在使用的PDO类的一部分。我修改了代码,现在它可以工作:
$userid = '1';
$query = "INSERT INTO users (username, password, email, firstname, lastname, user_id) VALUES ( :user, :pass, :email, :firstname, :lastname, :uid)";
$query_params = array(
':user' => $_POST['username'],
':pass' => $_POST['password'],
':email' => $_POST['email'],
':firstname' => $_POST['firstName'],
':lastname' => $_POST['lastName'],
':uid' => $userid
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch (PDOException $ex) {
$response["success"] = 0;
$response["message"] = "Failed to run query: " . $ex->getMessage();
die(json_encode($response));
}