如何将php中创建的变量传递给mysql数据库?

时间:2016-07-08 01:16:30

标签: php mysql database

我正在开发一款应用。我发布了一些应用程序,但我对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));
}

2 个答案:

答案 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));
}