尝试使用链接和准备语句中的id插入数据库

时间:2016-11-25 17:34:53

标签: php html sql prepared-statement

我目前有以下代码。我尝试做的是从链接中获取oppdrID=x并将查询放入具有相同oppdrID的行中。我不能让它工作,因为有些东西不起作用。我在这里错了什么?

<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="stilsett.php" />
<meta charset="utf-8">
<title>Endre oppdrag // Prosjekt - PHP</title>
</head>
<body>

<?php
include "funksjoner.inc.php";
session_start();
if(!empty($_SESSION['brukernavn'])) {

echo "<div id='header'>";

echo navigasjon();

echo "</div>";

echo "<div id='innhold'>";

$startTid = mysqli_real_escape_string(kobleTil(),  htmlspecialchars($_POST['startTid']));
$slutTid = mysqli_real_escape_string(kobleTil(),  htmlspecialchars($_POST['slutTid']));
$merknad = mysqli_real_escape_string(kobleTil(), htmlspecialchars($_POST['merknad']));
$antTimer = mysqli_real_escape_string(kobleTil(), htmlspecialchars($_POST['antTimer']));

if ($startTid == '' || $slutTid == '' || $merknad == '' || $antTimer == '')  {

$error = "Vennligst fyll inn alle dataene!";

}

$db = kobleTil();
if (isset($_GET['oppdrID']) && is_numeric($_GET['oppdrID']) &&   $_GET['oppdrID'] > 0) {

$id = $_GET['oppdrID'];

$sql = "INSERT INTO timeregistrering WHERE oppdrID = ? (startTid, sluttTid,  merknad, timer) values ('$startTid', '$slutTid', '$merknad', '$antTimer');
";

if ($stmt->prepare($sql)) {

$stmt->bind_param("i", $id, $startTid, $slutTid, $merknad, $antTimer);
$stmt->execute();

if ($db->query($sql)) {

    echo "<p><b>Tabellen ble opprettet!</b></p>";
    echo "<b>Spørringen som ble kjørt:</b><pre>$sql</pre>";

    } else {

    echo "<p>Noe gikk galt :(</p>" . $error;
        }
    }
    }
}

echo "</div>";

?>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

我认为你准备好的陈述是错误的,试试这个:

$sql = "INSERT INTO timeregistrering(startTid, sluttTid, merknad, timer) values (?, ?, ?, ?)";

$stmt->bind_param($startTid, $slutTid, $merknad, $antTimer);

我删除了where子句,因为您无法在where上使用insert,除非它是where not exists