私は以下の条件付きコードを持っています。これは適切なユーザー名を持つレコードが存在しない場合は新しいレコードを挿入し、存在する場合はレコードを更新します。これは正常に動作します。sql - 既存の情報をオーバーライドしないで更新する
しかし、現時点では、新しいレコードを挿入してfirstnameとlastnameだけを挿入し、電話の情報が空白のまま残っている場合には詳細情報を入力しても問題ありません。電話記録だけでレコードを更新したい場合、名前と住所情報は何も置き換えられません。
私が知りたいのは、情報を更新するためのPHPのhtmlフォームに簡単に埋め込む方法があるのでしょうか?更新するフィールドの内容は? Iは次いでバック以下のPHPコードに渡されたJavaScript関数に渡されるユーザ入力を得るために
<input type="text" name="uniquename" />
を使用しています。これが可能でない場合、空ではないユーザ入力に対応するフィールドのみを更新するために、いくつかのSQL/PHPマジックを操作する簡単な方法はありますか?
$usernameQuery = "select username from USERS where username = '" . $con->escape_string($username) . "'";
$xblah = $con->query($usernameQuery);
while ($row = mysqli_fetch_assoc($xblah))
{
$checkUsername = $row['username'];
}
if ($checkUsername == null) {
$userQuery = "INSERT INTO USERS VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
if ($userInfo = $con->prepare($userQuery)) {
$userInfo->bind_param("ssssssssssssssssssss", $username, $firstname, $lastname, $flaggedauctions, $lastauction, $street1, $city1, $postcode1, $street2, $city2, $postcode2, $phone, $mobilephone, $fax, $email, $website, $bank, $banknumber, $accountnumber, $comments);
$userInfo->execute();
$userInfo->close();
echo "true";
} else {
echo "false";
}
print_r($con->error);
}
else if ($checkUsername == $username) {
$userQuery = "UPDATE USERS SET firstname = ?, lastname = ?, flaggedauctions = ?, lastauction = ?, street1 = ?, city1 = ?, postcode1 = ?, street2 = ?, city2 = ?, postcode2 = ?, phone = ?, mobilephone = ?, fax = ?, email = ?, website = ?, bank = ?, banknumber = ?, accoutnumber = ? WHERE username = ?";
if ($userInfo = $con->prepare($userQuery)) {
$userInfo->bind_param("sssssssssssssssssss", $firstname, $lastname, $flaggedauctions, $lastauction, $street1, $city1, $postcode1, $street2, $city2, $postcode2, $phone, $mobilephone, $fax, $email, $website, $bank, $banknumber, $accountnumber, $username);
$userInfo->execute();
$userInfo->close();
echo "true";
} else {
echo "false";
}
print_r($con->error);
}
うーん、ありがとう。 bindArgsでは何が起こっていますか? –
私のPHPスキルは少し錆びますが、$ bindArgsをbind_param関数に渡すことができると思います。 私はあなたがPHPで可変数引数の関数に配列を渡すことができると信じています。 – oscarkuo
だから、彼らは2つの別々の解決策ですか?私は各変数にbindARgsを使用するだけですか? –