pdo mysql 쿼리 함수를 만들려고합니다. 이 함수는 배열 값만 가져 오지만 두 개 이상의 값이있는 경우 bindParam() 부분의 값을 전환하면 잘 작동합니다. 난 다음 매개 변수 함수를 호출하는 경우 날짜가 그 금액이 삽입되고 양은 날짜 삽입 될 수 있도록PHP/PDO : MySQL 삽입 함수
public function db_qf($table, $fieldvalues, $where)
{//query function
$sql = "INSERT INTO " . $table . " (";
$parameters = "";
$counter = 0;
foreach ($fieldvalues as $key => $value)
{
$sql .= $key;
$parameters .= ":" . $key;
if (++$counter != count($fieldvalues)){$sql .= ", "; $parameters .= ", ";}
}
$sql .= ") VALUES (" . $parameters . ") " . $where;
$this->dbquery = $this->dbh->prepare($sql);
foreach ($fieldvalues as $key => $value)
{
$this->dbquery->bindParam(":" . $key, $value);
}
$this->dbquery->execute();
}
그래서 값이 전환된다.
$this->db_qf("bills", array("date" => "2013-11-24", "amount" => 30), "");
왜 이런 일이 발생하는지 알 수 없습니다.
'fieldValues'의 배열을 바인딩 대신에 execute 함수에 전달해보십시오. 또한 키의 일부로 콜론을 갖도록 키를 변경해야합니다. 내가 생각할 수있는 유일한 것은'bindParam'은 값 (두 번째 인자)을 참조로 취하고 바인딩 루프의 두 번째 루프 반복에서'$ value'가 바운드 된 값을 변경하는'amount'로 덮어 쓰게된다는 것입니다 ': date'로 변경하십시오. 이것은 두 값이 서로 바뀌지 않고 동일하다는 것을 의미합니다. –
난 그냥 bindParam 대신 bindValue를 사용해 보았는데 효과가 있었다. – Ralph