2
我最近開始在PHP中使用OOP,並開始使用我非常熟悉的函數。我一直在研究與MySQL數據庫連接的數據管理系統。我遇到的問題,當涉及到將內容插入數據庫,並收到此錯誤:錯誤:將INSERT內容插入到MySQL數據庫中
Warning: mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables ... on line 140
這是我的代碼:
public function create_val($content_array, $table)
{
$array_num = count($content_array);
// create value holders
$value_param = str_repeat('?, ', $array_num);
$stmt_values = rtrim($value_param, ', ');
// create bind params
$stmt_param = str_repeat('s', $array_num);
foreach($content_array as $key => $value)
{
$key_val[] = $key;
$val[] = $value;
}
$table_rows = implode(', ', $key_val);
$insert_val = implode(', ', $val);
$sql = "INSERT " . $table . " (" . $table_rows . ") VALUES (" . $stmt_values . ")";
if($stmt = $this->_connection->prepare($sql))
{
try
{
$stmt->bind_param($stmt_param, $insert_val);
$stmt->execute();
$stmt->close();
}
catch(Exception $e)
{
echo "There was an unexpected problem. " . $e->getMessages();
}
}
}
我知道錯誤是由這一行造成的: $stmt->bind_param($stmt_param, $insert_val);
。
但我只是不明白爲什麼;我已經檢查了$stmt_param
和$insert_val
,並且他們在數量上相匹配 - 在我正在運行的這個特定嘗試中。
將這些值作爲$key => $value
對插入。這是我的設置,以調用類:
$array = array(
'column1' => 'an item',
'column2' => 'a second content',
'column3' => 'some information',
'column4' => 'what what what???'
);
$db->create_val($array, 'table_name');
我使用此功能的目標是要爲可重複使用和模塊化,因爲我可能可以編寫它。我看了很多類似的問題,但還沒有找到任何可以使用的問題。即使在上課時,它們也不能用於不同的目的,我的目的是可重用的。
1.檢查表列和2.與您正在發送的內容進行比較3.echo $ sql查詢和4.try在數據庫中執行5.tell出現什麼錯誤。 –
@AbdulWaheed我的測試數據庫有4列,所有'varchar(500)'我不確定查詢與實際衝突有多大關係。 – Samuel
'bind_param'只適用於一次綁定單個參數。 – Scuzzy