在显示数据库数据的表上,我有一个表单,其中有一个文本区域,用户可以在其中键入收据编号并提交以保存在特定行的数据库中。下面的PHP代码是在提交表单后更新数据库的代码。
我想选择特定行的其余详细信息,因此我使用了已提交收据的$_POST['id']
。 id
是主键。然而,我遇到了挑战,因为我无法使用$id = $_POST['id'];
从数据库中获取数据,而我在函数外部创建了update
语句,SELECT STATEMENT
语句完全正常但if(isset($_POST['submit'])) {
$rec = $_POST['receipt'];
$id = $_POST['id'];
//reate connection
$sql = "UPDATE customer SET `receipt` = '".$_POST['receipt']."', `date_entered` = NOW(), `receipt_lock` = 1 WHERE `id` = '".$_POST['tid']."' AND receipt_lock = 0";
if ($conn->query($sql) === TRUE) {
// echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
exit();
$conn->close();
}
function wall(){
global $recp;
global $id;
// Create con
$sql = "SELECT * FROM customer WHERE id ='$id'";
$result1 = mysqli_query($conn, $sql);
$resultarr = mysqli_fetch_assoc($result1); // fetch data
$name = $resultarr['name'];
echo "$name"; //Does not display
$amount = $resultarr['amount'];
$transaction_id = $resultarr['trans_id'];
$date = $resultarr['time_paid'];
}
else {
echo "this is not right!;
}
wall();
没有。我该怎么办呢?任何人?
document.querySelector('.someform').addEventListener('click', clickHandler);
function clickHandler(e) {
var input = e.path.filter(function (x) {return x.type === 'checkbox'});
if(input.length) {
console.log(input.pop().parentNode);
}
}
答案 0 :(得分:0)
您的SQL查询中似乎使用的是$_POST['tid']
而不是$_POST['id']
或$id
。
答案 1 :(得分:0)
忽略有关SQL安全性的所有(有效)问题并解决您的问题 - 如何将$ id变量作为参数传递给wall函数。?
wall($id);
function wall($id){
$sql = "SELECT * FROM customer WHERE id ='$id'";
// ... use prepared statements for security...
...
}
答案 2 :(得分:-1)
在安全性方面,你所做的是一个很大的nono。在将查询添加到查询中之前,请确保将其转义为POST参数。
$id = $_POST['id'];
$id = mysqli_real_escape_string($conn, $id);
http://php.net/manual/ro/mysqli.real-escape-string.php
考虑将数据作为函数函数wall($ id)的参数而不是全局参数发送。