私は非常に小さなPHPおよびMySQLアプリケーションに取り組んでいます。以下に示すように、createUserメソッドを含むデータベース内のユーザーデータを操作するためのUserというクラスがあります。
/**
* Creates a new user record in the users table for a new user
*
* @return void
*/
public function createUser($user_id, $user_name, $location_id) {
// query to execute
$query = "INSERT INTO
users(user_id,user_name,location_id)
VALUES(:id,:name,:location)";
// query parameters
$parameters = array (
':id' => $user_id,
':name' => $user_name,
':location' => $location_id
);
$databaseInteractions = new DatabaseInteractions();
$databaseInteractions->executeUpdate($this->_connection, $query, $parameters);
}
上記のコードに示すように、DatabaseInteractionsと呼ばれるデータベースと対話するための一般的なメソッドを含む別のクラスがあります。このクラスには、以下に示すように、DMLクエリを実行するためのexecuteUpdateというメソッドが含まれています。
/**
* A function for executing DML queries using a prepared statement
* @param $connection The database connection object
* @param $query The dml query to be executed
* @param $parameters The input parameters for the query as a hash
*/
public function executeUpdate($connection,$query, $parameters) {
if ($stmt = $connection->prepare($query)) {
//bind query parameters
foreach ($parameters as $key => $value) {
$stmt->bindParam($key, $value);
}
//begin transaction
$connection->beginTransaction();
$stmt->execute();
$stmt->closeCursor();
//commit transaction
$connection->commit();
}
}
以下に示すように、UserクラスでcreateUserメソッドを呼び出すと、
$user->createUser(3,"NewUser",1);
データベースに挿入される値は次のとおりです。-
user_id user_name location_id
1 1 1
コードのデバッグに時間を費やしましたが、それでもこれが発生している理由を見つけることができないようです。user_idはPKであり、intです。user_nameはvarchar、location_idはFK、intです。
私はJava開発者であり、PHPを初めて使用するため、phpの命名規則、コーディング標準などに関連する入力はいつでも歓迎します。