2016-07-08 7 views
1

私はアプリを開発中です。私はいくつかのアプリを公開しましたが、PHPの経験は限られています。このアプリは、mysqlデータベースとPHPスクリプトを使用して、アプリケーションからデータベースにデータを渡します。 POSTを使用してアプリケーションの入力フィールドからデータベースにデータを取得する方法を理解しましたが、何らかの理由でPHPで作成された変数をデータベースに渡す方法がわかりません。 。PHPで作成した変数をmysqlデータベースに渡すには?

私が問題を抱えている変数は、user_id変数です。私はそれをPOST経由でアプリからの入力を渡すregistration.phpスクリプトの中でそれを作成します。ここにコードの関連部分があります。変数はuser_idという変数を除いてすべて動作します(つまり、列には常に「0」が表示されます)。

EDIT:データベースでは、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

エラーが発生しましたか?空のテーブルを使用すると、フィールドuser_idの値が0の新しい行がコードに追加されましたか? –

+0

先行ゼロは無視されます。これは、列のデータ型が 'int'であるためです。したがって、 '00000000'はちょうど' 0'です。 '1'を使用して何が起こるかを確認してください – Terminus

+0

@ s-hunterエラーはありません...テーブルは空ではありません。私は手動でphpMyAdminを使って新しい列user_idを作成しました。はい。新しいユーザーが作成されるたびに、列にゼロが追加されます。 –

答えて

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

「000000」を挿入していて結果が常に0であると言うのはなぜですか?これは意味があります。

+0

私はあなたが正しいと思います...もちろんINTデータ型を使用すると、000000は0になります!私が考えていたことは何でしょう。私は1を使用して、家に帰るときにそれが機能するかどうかを確認します。ありがとう。 –

0

同じ問題を抱えている人は、コメントと回答が正しいと思います...私には2つの問題がありました。まずINTデータ型(DUH!)を扱うときに '0000000'は '0'として扱われますので、もちろんデータベースは常に '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)); 
} 
関連する問題