0
"call_list"と呼ばれる現在のデータベースがあります。その中に、colums id、name、email、およびtelを持つcall_listというテーブルがあります。PHPはmysqlデータベースの電子メール、電話、および名前を確認します
何らかの理由で私のコードが正しく機能していないため、データベース内の何かと一致しても同じ情報が挿入され続けます。
<?php
//server info
$servername = "***.***.**.***";
$username = "********";
$password = "*****************";
$dbname = "call_list";
//create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
//test connection
if(!$conn){
die("Connection Failed: ". $mysqli_connect_error());
}
//check for name in the database
$sql_check = "SELECT * FROM call_list WHERE name = '".$name."'";
$sure_check = mysqli_query($conn, $sql_check);
$checked = mysqli_affected_rows($sure_check);
if($checked == 0){
//check for email in database
$sql_check2 = "SELECT * FROM call_list WHERE email = '".$email."'";
$sure_check2 = mysqli_query($conn, $sql_check2);
$checked2 = mysqli_affected_rows($sure_check2);
if($checked == 0){
//check for telephone in the database
$sql_check3 = "SELECT * FROM call_list WHERE tel ='".$tel2."'";
$sure_check3 = mysqli_query($sql_check3);
$checked3 = mysqli_affected_rows($sure_check3);
if($checked3 == 0){
//try to insert info
$sql2 = "INSERT INTO call_list (name, email, tel) VALUES ('$name', '$email', '$tel2')";
if(mysqli_query($conn, $sql2)){
//set session variable to success
$_SESSION['result_sql'] = "<div class='alert alert-success'>New record created successfully</div>";
}else{
//set session variable to failure
$_SESSION['result_sql'] = "<div class='alert alert-danger'>Error: ". $sql . "<br>". mysqli_error($conn)."</div>";
}
}else{
//set session variable to duplicate telly
$_SESSION['result_sql'] = "<div class='alert alert-warning'>Client phone number already in database</div>";
}
}else{
//set session variable to duplicate email
$_SESSION['result_sql'] = "<div class='alert alert-warning'>Client email already in database</div>";
}
}else{
//set session variable to duplicate name
$_SESSION['result_sql'] = "<div class='alert alert-warning'>Client name already in database</div>";
}
//finally close the connection.
mysqli_close($conn);
?>
:
は、これは動作するコードであるべきところ$ nameは、$メール、...から来るのでしょうか?第2回:準備されたステートメント、SQLインジェクションに脆弱なステートメントについて学びます。 – Jeff
そして、あなたが 'select * from call_list where x = y OR z = a ... 'を使うならば、すべてのifを1つに減らすことができます。 – Jeff
3番目のmysqli_affected_rowsはmysqli_resultオブジェクトではなくmysqliリンクオブジェクトを取りますパラメータ:http://php.net/manual/en/mysqli.affected-rows.php – Jeff