Php 这是准备和执行bind_param的正确方法吗
我正在尝试插入数据库,但总是收到回音: “门票niet aangemaakt” 我可以在变量之间使用“?”吗 如果是,有人能看到一些错误,否则我知道有一个拼写错误 变量Php 这是准备和执行bind_param的正确方法吗,php,mysqli,Php,Mysqli,我正在尝试插入数据库,但总是收到回音: “门票niet aangemaakt” 我可以在变量之间使用“?”吗 如果是,有人能看到一些错误,否则我知道有一个拼写错误 变量 <?php //this works fine $ophaalKlantQuery = "SELECT * FROM klant WHERE klantNaam='$naam'"; $result = $connectie->query($ophaalKlantQuery); if (mysqli_n
<?php
//this works fine
$ophaalKlantQuery = "SELECT * FROM klant WHERE klantNaam='$naam'";
$result = $connectie->query($ophaalKlantQuery);
if (mysqli_num_rows($result) == 0) {
echo "klant niet gevonden";
}
while ($row = $result->fetch_assoc()) {
if ($row['klantNaam'] === $naam) {
echo $row['klantNaam'];
$klantID = $row['klantId'];
}
}
// everything below doesnt insert
$insertticket = $connectie->prepare("INSERT INTO ticket (ticketId, inBehandeling, probleem, trefwoorden, prioriteit, aantalXterug,
terugstuurLock, lijnNr, datumAanmaak, nogBellen, log, streefdatum, redenTeLaat, klantTevreden, ftsAccountNr, aangewAccountNr, klantId, subCategorieId,
binnenkomstId, vVLaptopTypeId, besturingssysteemId)
VALUES ('','$inbehandeling',?,?,?, '$aantalXterug','$terugstuurLock','$lijnNr','$datumAanmaak','$check','$log',?,'$redentelaat','$klanttevreden','$fstAccountNr',
'$aangewAccountNr','$klantID',?,?,?,?)");
if ($insertticket) {
$insertticket->bind_param('ssisiiii', $probleem, $trefwoorden, $prioriteit, $streefdatum, $scategorie, $binnenkomstT, $merktype, $besturingsysteem);
if ($insertticket->execute()) {
echo 'ticket aangemaakt';
//header("Refresh:5; url=../index.php", true, 303);
}
}else {echo 'ticket niet aangemaakt';}
?>
有不同的语法,但是现在执行SQL请求的好方法是将SQL与变量传递分开。决不应在SQL请求字符串中直接连接值 有关于这方面的文档,但总体来说,问题是用bind方法自动安全地替换字符串中的值 语法示例:
'INSERT INTO test (name, age) VALUES (?, ?)'
'INSERT INTO test (name, age) VALUES (:name, :age)'
对不起,请澄清,为什么要用“?”代替值?是让它们空白吗?或者你想把一个变量放到那个值上?我正在绑定?带有bind_参数的值您需要向我们显示真正的错误是什么。您应该使用
echo“Error:”,而不是else{echo'ticket niet aangemaakt';}
。mysqli_错误($connectie)
并告诉我们它是什么,然后使用php的错误报告。如果?
占位符的数量与您尝试绑定的占位符匹配,并且是正确的i
和s
占位符,那么应该不会有问题。但是,您应该使用绑定它们,而不仅仅是一些。我只是看不到它们是在哪里定义的。$probleem、$trefwoorden、$prioriteit、$streefdatam、$scategorie、$binnenkomstT、$merktype、$besturingsysteem
和其他变量。您的问题不清楚,因此投票决定结束。为什么选择命名占位符?这些都是为PDO设计的,而不是他们正在使用的mysqli。在INSERT
中没有WHERE
子句。这也是^-我看不出混合变量和占位符的问题@卡达,这里没有人批评你,只是说明/询问你为什么包括命名占位符