Я просматриваю этот код, который я получил с YouTube, чтобы помочь мне понять, как подключить PHP к MySQL.
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$gender = $_POST['gender'];
$email = $_POST['email'];
$phoneCode = $_POST['phoneCode'];
$phone = $_POST['phone'];
if (!empty($username) || !empty($password) || !empty($gender) || !empty($email) || !empty($phoneCode) || !empty($phone)) {
$host = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbname = "youtube";
//create connection
$conn = new mysqli($host, $dbUsername, $dbPassword, $dbname);
if (mysqli_connect_error()) {
die('Connect Error('. mysqli_connect_errno().')'. mysqli_connect_error());
} else {
$SELECT = "SELECT email From register Where email = ? Limit 1";
$INSERT = "INSERT Into register (username, password, gender, email, phoneCode, phone) values(?, ?, ?, ?, ?, ?)";
//Prepare statement
$stmt = $conn->prepare($SELECT);
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->bind_result($email);
$stmt->store_result();
$stmt->store_result();
$stmt->fetch();
$rnum = $stmt->num_rows;
if ($rnum==0) {
$stmt->close();
$stmt = $conn->prepare($INSERT);
$stmt->bind_param("ssssii", $username, $password, $gender, $email, $phoneCode, $phone); //line 32
$stmt->execute();
echo "New record inserted sucessfully";
} else {
echo "Someone already register using this email";
}
$stmt->close();
$conn->close();
}
} else {
echo "All field are required";
die();
}
?>
Мой вопрос: что делают «ssssii» в строке 32?
а также какие значения (?,?,?,?,?,?) на $insert для?
Источник: Код и монеты YouTube.
Спасибо, я думал, что это просто случайное утверждение раньше.
Конечно, вы видите, что `$stmt->store_result(); $stmt->store_result();` выглядит довольно странно. Предполагая, что столбец email
является уникальным ключом в этой таблице, даже не пытайтесь проверить, существует ли значение email
в таблице (в любом случае это проблема, связанная с «условиями гонки»). Просто попробуйте ВСТАВИТЬ его. Если INSERT не работает, предположим, что адрес электронной почты уже указан.
Это подготовленное заявление. S — строка i — целое число.
(?,?,?,?)
для того, чтобы скрипт знал, где привязать параметры к
Он определяет типы данных следующих параметров. «s» — строка, «i» — целое число. В этом случае $username, $password и т. д. имеют типы string, string, string, string, integer, integer. Это необходимо для того, чтобы сервер MySQL использовал правильные типы данных при привязке параметров перед выполнением фактического запроса.