iT邦幫忙

0

(已解決)php/mysql 當資料庫已存在這個value,回傳重複,反之上傳資料庫

這是一個使用Jeditable的後端程式。

主要希望達成,當這個id所編輯的value中已存在這個value,就回傳重複,反之才上傳資料庫。

我的想法是:

  1. 先取出這個id所編輯的value有哪些
  2. 再檢查現在傳的value與資料庫中所編輯的value是否重複
  3. 如果重複,印出重複
  4. 如果不重複,UPDATE DATABASE

程式如下,好像在while之後有些問題......請教一下大家,謝謝/images/emoticon/emoticon41.gif

<?php
$userAccount = $_COOKIE["account"]; 
$id = $_POST['id'];
$value = $_POST['value'];
list($field, $id) = explode('_', $id);
require_once("dbtools.php");
$link = create_connection();
$value = trim($value);

$sqlCheck = "SELECT `name` FROM table WHERE `id`='$userAccount'";
$database = "database";
mysqli_select_db($link, $database)
or die("開啟資料庫失敗: " . mysqli_error($link));
$resultCheck = mysqli_query($link,$sqlCheck);
while($fielddatas=mysqli_fetch_array($resultCheck))
{
	$sqlCheck = "SELECT * FROM table WHERE `id`='$userAccount' AND `name`='$fielddatas[0]'";
	$database = "database";
	mysqli_select_db($link, $database)
	or die("開啟資料庫失敗: " . mysqli_error($link));
	$resultCheck = mysqli_query($link,$sqlCheck);
	if($resultCheck)
	{
		echo "重複";
	}
	else
	{
		$sql = "UPDATE table SET `name` = '$value' WHERE num='$id'";
		$database = "database";
		mysqli_select_db($link, $database)
		or die("開啟資料庫失敗: " . mysqli_error($link));
		$result = mysqli_query($link,$sql);
		echo $value;
	}
}
?>
邏輯有點怪怪的,照理說,你的sqlCheck 應該要確認有沒有相同的VALUE
可是你第一個sqlCheck 卻只是檢查 ID 而已
建議寫一個邏輯檢查表,或是驗證流程表,還有只是要驗證有沒有資料,可以不需要用 while 啊
小斑 iT邦新手 4 級 ‧ 2018-05-22 11:16:10 檢舉
謝謝,參考您的建議後,問題解決了,已修改如下:

<?php
$userAccount = $_COOKIE["account"];
$id = $_POST['id'];
$value = $_POST['value'];
list($field, $id) = explode('_', $id);
require_once("dbtools.php");
$link = create_connection();
$value = trim($value);

$sqlCheck = "SELECT `name` FROM table WHERE `id`='$userAccount' AND `name`='$value'";
$database = "table";
mysqli_select_db($link, $database)
or die("開啟資料庫失敗: " . mysqli_error($link));
$resultCheck = mysqli_query($link,$sqlCheck);
$nums = mysqli_num_rows($resultCheck);

if($nums > 0){
echo "重複";
}
else {
$sql = "UPDATE table SET `name` = '$value' WHERE num='$id'";
$database = "table";
mysqli_select_db($link, $database)
or die("開啟資料庫失敗: " . mysqli_error($link));
$result = mysqli_query($link,$sql);
echo $value;
}
?>
Good !!有時候想法轉一下,會很容易達成目標的,函式其實很多,不要只固定用幾個,那些函式都有存在的價值的

1 個回答

0
kendo_billiard
iT邦見習生 0 級 ‧ 2019-06-03 15:37:33

$sqlCheck = "SELECT name FROM table WHERE id='$userAccount' AND name='$value'";
請問這邊是比對輸入的值跟相對應資料表欄位的值有沒有一樣嗎?
$database = "table";
mysqli_select_db($link, $database)
or die("開啟資料庫失敗: " . mysqli_error($link));
$resultCheck = mysqli_query($link,$sqlCheck);
$nums = mysqli_num_rows($resultCheck);
請問後面這串的意思是啥

我要發表回答

立即登入回答