我的代碼是假設保存一年像1999
到MySQL數據庫,但它不會。它會檢查用戶是否輸入了唯一的號碼,並且至少有4個數字,或者沒有正確輸入,但不會保存正確的年份?我該如何解決這個問題。PHP表單驗證提交問題?
這裏是PHP代碼。
if(isset($_POST['year']) && intval($_POST['year']) && strlen($_POST['year']) == 4) {
$year = mysqli_real_escape_string($mysqli, $purifier->purify(htmlentities(strip_tags($_POST['year']))));
} else if($_POST['year'] && strlen($_POST['year']) < 4) {
echo '<p class="error">year is not correct!</p>';
} else if($_POST['year'] == NULL) {
// do something
}
這裏是代碼將要去的地方。
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, year)
VALUES ('$user_id', '$year')");
}
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE users
SET year = '$year'
WHERE user_id = '$user_id'");
echo '<p class="changes-saved">Your changes have been saved!</p>';
}
if (!$dbc) {
print mysqli_error($mysqli);
return;
}
這裏是代碼在一起。
if (isset($_POST['submit'])) {
if(isset($_POST['year']) && intval($_POST['year']) && strlen($_POST['year']) == 4) {
$year = mysqli_real_escape_string($mysqli, $purifier->purify(htmlentities(strip_tags($_POST['year']))));
} else if($_POST['year'] && strlen($_POST['year']) < 4) {
echo '<p class="error">year is not correct!</p>';
} else if($_POST['year'] == NULL) {
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, year)
VALUES ('$user_id', '$year')");
}
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE users
SET year = '$year'
WHERE user_id = '$user_id'");
echo '<p class="changes-saved">Your changes have been saved!</p>';
}
if (!$dbc) {
print mysqli_error($mysqli);
return;
}
}
}
問題必須在這一行上。
if(isset($_POST['year']) && intval($_POST['year']) && strlen($_POST['year']) == 4) {
$year = mysqli_real_escape_string($mysqli, $purifier->purify(htmlentities(strip_tags($_POST['year']))));
好了,它「不會保存正確的一年」,但什麼*不*它做什麼? - 打印錯誤?保存錯誤的值? – 2010-04-09 03:04:40
它只是不會保存它應該做的正確的一年。 – TaG 2010-04-09 03:05:23
感謝您使用DB代碼更新您的問題,但我仍然沒有看到兩個代碼塊是如何與海誓山盟相關的?你是否在第一個代碼塊之後立即調用if(mysqli_num_rows($ dbc)== 0)? – klabranche 2010-04-09 03:22:52