簡體   English   中英

如何使用受控語句和html表單通過php通過php向mysql db添加一行到用戶輸入?

[英]How do I add a row to mysql db via php using controlled statements and html form for user input?

我正在嘗試建立我網站的“管理員”部分。 我可以在其中更新工作訂單(或機票,如果您喜歡的話)的客戶狀態的一種。 我有它可以在文本字段中輸入int並單擊Submit to DELETE的地方 ,但是我無法使addRow函數正常工作。 它不會引起錯誤,這使我相信我沒有正確傳遞變量。

以下是admin.php上的表格:

<form name="newRow" METHOD="post" ACTION="q.php">
    Status of New Entry: <input type="text" value="Open" name="newStatus" /><br>
    Type of Maintenance being completed: <input type="text" value="Software Maintenance" name="maintType" /><br>
    <input type="submit" value="Add" name="newEntry" />
</form>

<form name="delRow" METHOD="post" ACTION="q.php">
    <input type="text" name="deleteID" />
    <input type="submit" value="Delete" name="delEntry"/>
</form>

至於我的q.php,這是我連接到數據庫后的內容(再次,使用delEntry / delRow部分沒有問題,所以我看不到連接/ mysqli初始化問題是怎么回事:

//prepare statements
$addData = $conn->prepare("INSERT INTO $tname (status, mainttype) VALUES (?, ?)");
$addData->bind_param("s,s", $newStatus, $maintType);

$delData = $conn->prepare("DELETE FROM $tname WHERE id=?");
$delData->bind_param("i", $deleteID);
//end prepared statements

//if New Entry Button is pressed
$newStatus = isset($_POST['newStatus'])
    ? $_POST['newStatus']
    : '';
$maintType = isset($_POST['maintType'])
    ? $_POST['maintType']
    : '';
$addData->execute();
if ( false===$addData ) {
    die('prepare() failed: ' . htmlspecialchars($mysqli->error));
}
else{
    printf("rows inserted: %d\n", $addData->affected_rows);
}

//if Del Entry Button is pressed
if ( isset( $_POST['delEntry'] ) ) {
    $deleteID = $_POST['deleteID'];
    $delData->execute();
}

$addData->close();
$delData->close();
$conn->close();
?>

我的列根據phpMyAdmin進行匹配:

$addData = $conn->prepare("INSERT INTO $tname (status, mainttype) VALUES (?, ?)");

狀態和維護類型(是2噸)。 我的ID(主要)是auto_incriment,因此我將其省略了,因為我不想偶然導致任何重復的密鑰錯誤。 它的auto_incriment已經過測試,似乎工作正常。

太有趣了,我添加了echo $ newStatus; 在我准備好的語句執行后,它會返回正確的值。 我似乎在添加新行時遇到問題。 仍然沒有錯誤生成。

printf("rows inserted: %d\n", $addData->affected_rows);

也會返回0行。

簡單的逗號問題。 上:

$addData->bind_param("ss", $newStatus, $maintType);

我把它列為:

$addData->bind_param("s,s", $newStatus, $maintType);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM