我试图将一个对象添加到数据库中,而不管该对象中的属性如何。例如,我有这两个类,每个类都在自己的表中。
class Movie {
public $Id;
public $Name;
public $PegiRating;
public $Length;
}
class Location {
public $Id;
public $Street;
public $HouseNumber;
public $City;
public $PostalCode;
public $Telephone;
public $Email;
}
问题在于必须在准备好的语句中。我已经设法获取正确的sql查询,但无法获取其中的值。
这是我到目前为止所拥有的:
public static function addRecord($tableName, $object)
{
//Creates an array of the object and removes the Id.
$object = (Array)$object;
unset($object["Id"]);
//Initializing variables
$columnNames = Array();
$values = Array();
$amountOfQuestionmarks = 0;
$columns = "";
$questionmarks = "";
//Setting variables
foreach ($object as $column => $value) {
$amountOfQuestionmarks++;
array_push($values, $value);
array_push($columnNames, $column);
}
//Setting the strings
for($i=0;$i <$amountOfQuestionmarks;$i++){
$columns .= $i != 0? ", $columnNames[$i]" : $columnNames[$i];
$questionmarks .= $i != 0? ", ?" : "?";
}
$sql = "INSERT INTO $tableName ($columns) VALUES ($questionmarks)";
$db = Db::getConnection();
$stmt = $db->prepare($sql);
for($i = 0; $i < $amountOfQuestionmarks;$i++){
$stmt->bind_param($i+1, $values[$i]);
}
$stmt->execute();
$stmt->close();
$db->close();
}
在最后一个for循环中,我试图绑定该值,但这失败。所以我的问题是如何将值绑定到准备好的语句。