我正在开发一个非常小的 PHP 和 MySQL 应用程序。我有一个名为 User 的类,用于操作数据库中的用户数据,其中包含一个 createUser 方法,如下所示:-
/**
* 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,如上面的代码所示。此类包含一个名为 executeUpdate 的方法,用于执行 DML 查询,如下所示:-
/**
* 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 命名约定、编码标准等相关的输入都是受欢迎的。