我正在處理一個用戶驗證表單,該表單將用戶的電話號碼和國家/地區插入到數據庫中,然後再進行驗證。但是,插入第一行後,它不插入第二行。在我的'user'mysql表中,我有'id'作爲AUTO_INCREMENT的主鍵。在mysql中插入第一行後無法插入行
<?php
class UsersController {
public $_GB;
function __construct($_GB)
{
$this->_GB = $_GB;
}
public function VerifyUser($phone, $code, $countryName)
{
$phone = $this->_GB->_DB->escapeString($phone);
$countryName = $this->_GB->_DB->escapeString($countryName);
$app_name = $this->_GB->getSettings('app_name');
$smsVerification = $this->_GB->getSettings('sms_verification');
if ($smsVerification == 1) {
$smsVerification = true;
} else {
$smsVerification = false;
}
if (!$this->UserExists($phone, $countryName)) {
// Generating API key
$auth_token = $this->generateApiKey();
$arrayData = array(
'phone' => $phone,
'auth_token' => $auth_token,
'status' => 'Hey, follow and add me up on ' . $app_name,
'status_date' => time(),
'country' => $countryName,
'is_activated' => 0,
'has_backup' => 0,
'backup_hash' => null
);
$result = $this->_GB->_DB->insert('users', $arrayData);
$newUserID = $this->_GB->_DB->last_Id();
$this->insertDefaultStatus($newUserID);
// check if row inserted or not
if ($result) {
$IDResult = $this->_GB->_DB->select('users', '*', " `phone` = '{$phone}'");
if ($this->_GB->_DB->numRows($IDResult) > 0) {
$fetch = $this->_GB->_DB->fetchAssoc($IDResult);
$res = $this->createCode($fetch['id'], $code);
if ($res) {
// successfully inserted into database
if ($smsVerification == true) {
$this->verificationCodeMessage($phone, $code);
}
$array = array(
'success' => true,
'message' => 'SMS request has been initiated! Please wait, You will be receiving it shortly.',
'mobile' => $phone,
'smsVerification' => $smsVerification,
'code' => $code,
'hasBackup' => $fetch['has_backup'] == 1 ? true : false
);
return $array;
} else {
// Failed to create user
$array = array(
'success' => false,
'message' => 'Sorry! Something went wrong.',
'mobile' => null,
'smsVerification' => $smsVerification,
'code' => null,
'hasBackup' => false
);
return $array;
}
}
} else {
// Failed to create user
$array = array(
'success' => false,
'message' => 'SORRY! SOMETHING WENT WRONG2.',
'mobile' => null,
'smsVerification' => $smsVerification,
'code' => null,
'hasBackup' => false
);
return $array;
}
} else if ($this->UserExists($phone, $countryName)) {
// User with same phone already existed in the database
// Generating API key
$auth_token = $this->generateApiKey();
$fields = "`auth_token` = '" . $auth_token . "'";
$fields .= ",`is_activated` = '" . 0 . "'";
$result = $this->_GB->_DB->update('users', $fields, "`phone` = {$phone}");
// check if row inserted or not
if ($result) {
$IDResult = $this->_GB->_DB->select('users', '*', " `phone` = '{$phone}'");
if ($this->_GB->_DB->numRows($IDResult) > 0) {
$fetch = $this->_GB->_DB->fetchAssoc($IDResult);
$res = $this->createCode($fetch['id'], $code);
if ($res) {
// successfully inserted into database
// send sms
if ($smsVerification == true) {
$this->verificationCodeMessage($phone, $code);
}
$array = array(
'success' => true,
'message' => 'SMS request has been initiated! Please wait, You will be receiving it shortly.',
'mobile' => $phone,
'smsVerification' => $smsVerification,
'code' => $code,
'hasBackup' => $fetch['has_backup'] == 1 ? true : false
);
return $array;
} else {
// Failed to create user
$array = array(
'success' => false,
'message' => 'Sorry! Something went wrong.',
'mobile' => null,
'smsVerification' => true,
'code' => null,
'hasBackup' => false
);
return $array;
}
}
} else {
// Failed to create user
$array = array(
'success' => false,
'message' => 'Sorry! Something went wrong.',
'mobile' => null,
'smsVerification' => $smsVerification,
'code' => null,
'hasBackup' => false
);
return $array;
}
} else {
$array = array(
'success' => false,
'message' => 'Sorry! mobile number is not valid or missing.',
'mobile' => null,
'smsVerification' => $smsVerification,
'code' => null,
'hasBackup' => false
);
return $array;
}
}
}
當我嘗試驗證第一個用戶時,它工作正常。當再次驗證第一個用戶時,它會成功更新用戶行,因爲它已經存在。但是,當我嘗試驗證另一個用戶時,沒有任何內容插入到數據庫中;它只會給我「SORRY!SOMETHING WENT WRONG2」
請參閱我的數據庫db.sql。
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL,
`UserName` varchar(225) NOT NULL,
`UserStatus` varchar(100) NOT NULL,
`UserState` text NOT NULL,
`phone` varchar(255) NOT NULL,
`country` varchar(255) DEFAULT NULL,
`status` varchar(255) DEFAULT NULL,
`auth_token` varchar(32) NOT NULL,
`UserImage` varchar(100) DEFAULT NULL,
`UserCover` varchar(200) DEFAULT NULL,
`FullName` varchar(225) NOT NULL,
`Date` int(11) NOT NULL,
`active` int(11) DEFAULT '1',
`website` text,
`reg_id` text,
`isFollowing` text NOT NULL,
`status_date` int(11) NOT NULL,
`is_activated` int(1) NOT NULL DEFAULT '0',
`has_backup` int(1) NOT NULL DEFAULT '0',
`backup_hash` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `users`
ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `Index_2` (`UserName`), ADD KEY `Index_3` (`active`);
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
唯一鍵不允許重複相同的值,請檢查您的插入值 – praveena