我想在將數據輸入到數據庫列之前檢查元組數據是否存在。我正在嘗試mysql_query,並得到我應該使用mysqli的錯誤,但它似乎沒有爲我工作。檢查數據庫中是否存在元組數據,然後插入
這是到目前爲止我的代碼
foreach ($AllData as $sigleData) {
$table = $sigleData['name'];
$columns = implode(", ", $sigleData['columns']);
$columnData = implode(" ',' ", $sigleData['data']);
//insert into database tuple data
$sqlQuery = "INSERT INTO " . $table . " (" . $columns . ") VALUES('" . $columnData . "')";
if ($dbConnectionT->query($sqlQuery) == TRUE) {
echo "database updated";
echo "</br>";
}
}
我有這樣的功能: -
function check_tuple_exists($table){
global $dbConnectionT; // connection to database
$sql = "SELECT ALL FROM '".$table."'";
$res = $dbConnectionT->query($sql);
if ($res->num_rows > 0)
{ // output data of each row
while($row = $res->fetch_assoc()) {
echo "data " . $columnData . "<br>";
}
} else
{
echo "0 results";
}
}
,但它給了我這個錯誤: - 試圖讓非對象
你的代碼似乎沒有檢查數據庫中是否存在任何東西,所以我不明白這個問題。 –
對不起,我剛剛添加了我創建的功能@GordonLinoff – tony
如果你不想在數據庫中有重複的條目,那麼你**不會**你在做什麼。您創建一個唯一的密鑰,並且只能插入。如果記錄存在,MySQL將使用SIGNAL SQLSTATE,這在大多數語言中被解釋爲一個例外。這種做事方式的原因是MySQL和連接客戶端之間存在一定的延遲(在你的情況下,這是PHP)。當您得到某些信息不存在的信息時,另一個進程可能會在此期間插入數據。這就是爲什麼我們讓數據庫擔心數據完整性,而不是使用它們的語言。 –