Позвольте мне предисловие, что я только начал изучать подготовленные заявления, поэтому многое из этого можно было бы просто понять, но я хочу попробовать.динамический подготовленный оператор вставки
Я пытаюсь создать динамическую функцию создания в моем классе DatabaseObject. Функция будет принимать любое количество значений потенциально любого числа различных допустимых типов данных. К сожалению, я ничего не пробовал. Вот код.
public function create() {
$db = Database::getInstance();
$mysqli = $db->getConnection();
//array of escaped values of all types in the object
$attributes = $this->sanitized_attributes();
$check = $mysqli->stmt_init();
$paramType = array();
$types = ''; $bindParam = array(); $where = ''; $count = 0;
foreach($attributes as $key=>$val)
{
$types .= 'i';
$bindParam[] = '$p'.$count.'=$param["'.$key.'"]';
$where .= "$key = ? AND ";
$count++;
}
$sql_query = "INSERT INTO `".static::$table_name."` ";
$sql_query .= "VALUES (";
foreach ($attributes as $key => $value) {
$valueType = gettype($value);
if ($valueType == 'string') {
$sql_query .= "?,";
array_push($paramType, "s");
} else if ($valueType == 'integer') {
$sql_query .= "?,";
array_push($paramType, "i");
} else if ($valueType == 'double') {
$sql_query .= "?,";
array_push($paramType, "d");
} else {
$sql_query .= "?,";
array_push($paramType, "b");
}
}
$sql_query .= ")";
}
На данный момент я полностью потерял то, что я должен делать.
У меня есть простые подготовленные операторы для работы, но этот процесс намного сложнее и динамичен, и я не знаю, правильно ли я обработал процесс до этого момента и что делать после sql_query, чтобы получить это работать. Все вопросы здесь оставили меня в замешательстве, поэтому, возможно, если бы я получил руководство с моим текущим кодом, чтобы увидеть, где я ошибся, это поможет.
Я ценю ваше время.