首先,如果我的標題不能很好地解釋這種情況,我很抱歉認爲這是一個好問題。
我試圖從窗體中取出所有輸入並將它們放入數據庫中。如果這是可能的話,我現在並不是100%肯定的,但我想我會發布它以確保。代碼評論,但我得到使用準備好的語句時的預定義語句
INSERT INTO items (title, description, category, size) VALUES (?, ?, ?, ?)
'ssss', $fields[0][1], $fields[1][1], $fields[2][1], $fields[3][1]
Warning: Wrong parameter count for mysqli_stmt::bind_param()
我猜這是因爲我通過變量,而不是它的價值。但即使我確實通過了它的價值,不管它是否好代碼對我來說都是值得懷疑的。
// $fields[x][0] is title of x, $fields[x][1] is value of x
$statement = 'INSERT INTO items (';
// Add all the field names
for ($i = 0; $i < count($fields) - 1; $i++) {
$statement .= $fields[$i][0] . ', ';
}
$statement = $statement . $fields[count($fields) - 1][0] . ') VALUES (';
// Add '?' for every field
for ($i = 0; $i < count($fields) - 1; $i++) {
$statement .= '?, ';
}
$statement = $statement . '?)';
echo $statement . '<br />';
// Add all the value types to the statement
$params = '\'';
for ($i = 0; $i < count($fields); $i++) {
if (gettype($fields[$i][1]) == 'integer') {
$params .= 'i';
} else {
$params .= 's';
}
}
$params .= '\', ';
// Put the values into the statement
for ($i = 0; $i < count($fields) - 1; $i++) {
$params .= '$fields[' . $i . '][1], ';
}
$i = count($fields) - 1;
$params .= '$fields[' . $i . '][1]';
echo $params;
// Put it all in the database
$db = mysqlConnect();
$stmt = $db->stmt_init();
$stmt->prepare($statement);
$stmt->bind_param($params);
$stmt->close();
$db->close();
我認爲這將是我會得到的迴應,所以我必須堅持定期查詢。我確實知道將它作爲參數傳遞,我只是認爲可能有一種方法可以用它的值替換'$ params'(所以它正常工作,ish)。 – 2012-02-19 21:21:26