所以我有一個創建帳戶方法,並在其內部建立了一個名爲userInfo
的關聯數組。這是陣列:如何在bind_param上使用implode?
$userInfo = array(
'username' => $username,
'salt' => $this->passwordHash('Extra Protection is a good thing'),
'password' => $this->passwordHash($password)
);
現在我正在嘗試使用implode和prepared語句。當它試圖綁定參數時,我似乎遇到了No data supplied for parameters in prepared statement
錯誤。
以下是該語句:
if (! ($stmt = $this->Connection()->prepare("INSERT INTO " . $this->_info['Prefix'] . "users
(`".implode("`, `", array_keys($userInfo))."`) VALUES (?, ?, ?)")))
{
echo 'Prepare Failed: ' . $stmt->error . '<br />';
}
if (! $stmt->bind_param('sss', implode("', '", $userInfo)))
{
echo 'Bind Failed: ' . $stmt->error . '<br />';
}
if (! $stmt->execute())
{
echo 'Execute Failed: ' . $stmt->error . '<br />';
}
我最初使用real_escape_string
和查詢並正確執行。這只是它不喜歡的準備好的陳述。
它有什麼問題?
'implode(「','」,$ userInfo)給** **一個**字符串,而'bind_param('sss''期望**三個**字符串 – 2014-09-28 18:08:45
@u_mulder我試着做's'但是同樣的問題... – user3481788 2014-09-28 18:09:31
one's'表示你應該只有一個'?' ery文本,而不是'3'。 – 2014-09-28 18:10:14