[英]Check whether the data already exists in MySQL
我正在嘗試檢查數據狀況。 如果數據已存在,則不會插入。 否則會插入。 但問題是數據仍然插入雖然它已經存在!
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
//Getting values
$project = strtoupper($_POST['project']);
if($project != null)
{
//Importing our db connection script
require_once('dbConnect.php');
$sql="SELECT * FROM Project WHERE project='$project'";
$check=mysqli_fetch_array(mysqli_query($con,sql));
if(isset($check))
{
// no need insert
}
else{
//Creating an sql query
$sql = "INSERT INTO Project(project) VALUES ('$project')";
}
//Executing query to database
if(mysqli_query($con,$sql)){
echo ' Added Successfully';
}else{
echo 'Could Not Add Project';
}
}
else
{
echo "data is null";
}
//Closing the database
mysqli_close($con);
}
?>
您的代碼中存在多個問題。 我將首先回答你的問題。 永遠不會設置$check
因為您的查詢沒有被執行。 在$
從缺少$sql
。 此外,在查詢中使用之前,您始終需要清理/轉義用戶輸入。 如果你沒有對它進行消毒,那么黑客可能會在你的查詢中注入不需要的代碼,做你不想做的事情。 請參閱下面的更新和優化代碼:
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
//Getting values
if(isset($_POST['project']) && !empty($_POST['project'])){
//Importing our db connection script
require_once('dbConnect.php');
$project = strtoupper($_POST['project']);
//Security: input must be sanitized to prevent sql injection
$sanitized_project = mysqli_real_escape_string($con, $project);
$sql = 'SELECT * FROM Project WHERE project=' . $sanitized_project . ' LIMIT 1';// LIMIT 1 prevents sql from grabbing unneeded records
$result = mysqli_query($con, $sql);
if(mysqli_num_rows($result) > 0){
// a match was found
// no need insert
}
else{
//Creating an sql query
$sql = "INSERT INTO Project(project) VALUES ('$sanitized_project')";
//Executing query to database
if(mysqli_query($con,$sql)){
echo('Added Successfully');
}
else{
echo('Could Not Add Project');
}
}
else{
echo('data is null');
}
//Closing the database
mysqli_close($con);
}
?>
糾正這一行$check=mysqli_fetch_array(mysqli_query($con,sql));
,你在sql
之前錯過了$
。 這就是條件評估為假的原因。
執行sql應該放入“需要插入”其他{}。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.