我今天花了大量的類似的問題,並試圖找出我的代碼有什麼問題,人們用back ticks有很多問題,引號等,但似乎沒有幫助或改變我的事業。我的代碼不會產生任何錯誤,但是當我使用echo
來打印出我的查詢結果時,似乎該ID沒有得到一個值。mySQL - 不能刪除表格行(不顯示錯誤)
在我delete.php:
<?
ini_set('display_errors',"1");
$username="xxx";
$password="xxx";
$database="xxx";
$conn = new mysqli(localhost, $username, $password, $database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$id = (int)$_GET['number'];
mysqli_query($conn,"DELETE FROM tourdates WHERE id=".$id."");
$conn->close();
?>
而在我的main.php刪除按鈕(PHP的其餘部分被正確地顯示我的數據表):
<td><a href='delete.php?number='".$row['id']."'>Delete</a></td>
能
人幫助挑選出當我點擊我創建的刪除按鈕時我的行不會被刪除的東西,或者更清楚的東西可以幫助我調試? (我不想爲此使用複選框)。
編輯:
我也試過這個代碼(在定義函數作爲$sql
,我得到一個 「成功」 的消息:
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
編輯2:
我改變了建議,我應該使用POST的建議,以爲我可能抓到了一些我以前沒有注意到的東西,但仍然無法正常工作。
echo "<td><form method='post' action='delete.php'>
<input type='hidden' name='row_id' value=".$row['id']." />
<input type='submit' name='delete_row' />
</form>";
-
if(isset($_POST['delete_row'])) {
$stmt = $conn->prepare("DELETE FROM tourdates WHERE ID = ?");
$stmt->bind_param('i', $_REQUEST['row_id']);
$stmt->execute();
}
如果我這樣做上述方式,沒有任何反應。也試過這種方法,並得到一個語法錯誤:
if(isset($_POST['delete_row'])) {
$id = $_POST['row_id'];
$sql = "DELETE FROM tourdates WHERE id=".$id;
mysqli_query($conn,$sql);
}
您正在控制的錯誤來自連接而不是查詢。查看文檔http://php.net/manual/en/mysqli-stmt.error.php –
@EricMartinez請參閱編輯... –
用簡單的字符串定義查詢,打印它以查看它包含的內容,然後通過它到了mysql_query。像這樣:'$ query =「DELETE ...」; echo $ query; $ conn->查詢($查詢);'。 –