- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我用自己的数据库制作了一个管理面板。
在连接到另一个(它自己的)数据库的 preorder.php 页面上,在用户填写表格并且 stripe 处理订单后,我检查费用是否已支付;
if ($charge->paid == true) {
$amountReadable = $amount / 100; // to add in decimal points
echo '<div class="alert alert-success">Your card was successfully billed for $'.$amountReadable.'</div>';
$status = "paid";
然后我连接到主数据库和管理数据库(它们都有“订单”表)并插入此查询:
$connect = mysql_connect("localhost",DB_USER,DB_PASS);
if (!$connect){
die('Could not connect: ' . mysql_error());
}
mysql_select_db(DB_NAME, $connect);
$query = "INSERT INTO 'DB_NAME'.`orders` (`email`, `name`, `qty`, `product`, `amount`, `stripe_customer_id`, `stripe_charge_id`, `address1`, `address2`, `city`, `state`, `zip`, `timestamp`, `status`) VALUES ('$email','$cardName', '$qty', '$product', '$amountReadable', '$customer->id', '$charge->id', '$cardAddress1', '$cardAddress2', '$cardCity', '$cardState', '$cardZipcode', CURRENT_TIMESTAMP`, $status);";
mysql_query($query);
if (mysql_errno()) {
$error = "MySQL error ".mysql_errno().": ".mysql_error()."\n<br>When executing:<br>\n$query\n<br>";
exit;
}
mysql_close($connect);
//insert into db for admin
$connect = mysql_connect("--------","------","-------");
if (!$connect){
die('Could not connect: ' . mysql_error());
}
mysql_select_db(database2, $connect);
$query = "INSERT INTO 'database2'.`orders` (`email`, `name`, `qty`, `product`, `amount`, `stripe_customer_id`, `stripe_charge_id`, `address1`, `address2`, `city`, `state`, `zip`, `timestamp`, `status`) VALUES ('$email','$cardName', '$qty', '$product', '$amountReadable', '$customer->id', '$charge->id', '$cardAddress1', '$cardAddress2', '$cardCity', '$cardState', '$cardZipcode', CURRENT_TIMESTAMP, $status);";
然后在管理面板上它有自己的数据库(上面的 database2),(orders.php) 我将这些数据拉入 Bootstrap 表,如下所示:
编辑 1#:我将管理面板中的 orders.php 更改为如下内容:
$result = mysqli_query($con,"SELECT * FROM orders");
echo "<table border='1' data-toggle='table'>
<tr>
<th>id</th>
<th>email</th>
<th>name</th>
<th>qty</th>
<th>product</th>
<th>amount</th>
<th>address1</th>
<th>address2</th>
<th>city</th>
<th>state</th>
<th>zip</th>
<th>status</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['qty'] . "</td>";
echo "<td>" . $row['product'] . "</td>";
echo "<td>" . $row['amount'] . "</td>";
echo "<td>" . $row['address1'] . "</td>";
echo "<td>" . $row['address2'] . "</td>";
echo "<td>" . $row['city'] . "</td>";
echo "<td>" . $row['state'] . "</td>";
echo "<td>" . $row['zip'] . "</td>";
echo "<td>" . $row['status']. "</td>";
echo "<td><form action='markshipped.php' method='POST'><input type='hidden' name='status' value='".$row["id"]."'/><input type='submit' name='submit-btn' value='Mark Item Shipped' /><form></td>";
echo "</tr>";
}
echo "</table>";
那么我的 markshipped.php 是:
<?php
$con=mysqli_connect("----","----","----","----");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"UPDATE orders SET status='shipped' WHERE id=$id");
mysqli_close($con);
?>
我仍然对 php/mysql 不太满意,不幸的是我无法测试它,直到有人购买任何东西,因为在 strip 测试模式下,没有一张卡无法通过表格...
所以我的问题主要是:
我收到两条错误消息:
1. undefined variable :id in/admin/orders/markshipped.php 第9行
-这是这一行:mysqli_query($con,"UPDATE orders SET status='shipped' WHERE id=$id");
2.未定义索引:状态在/admin/orders/orders.php第88行
-即:echo "<td>" . $row['status']. "</td>";
显然我正在设置 $status = "paid";
错误和/或错误的地方。
我如何正确设置这些以便最初将商品标记为“已付款”,然后在点击每一行的“标记商品已发货”按钮后将其更改为“已发货”?你能发现我的代码中的任何其他错误吗?
非常感谢您的宝贵时间!
最佳答案
您需要使用以下方法获取您的 $_POST['status']:
$id = $_POST['status'];
在 markshipped.php 中以运行您的查询。我会将隐藏输入字段的名称更改为“id”并获取 $_POST['id'],因为你想提交 id。
你在这一行中有一个`(第一个插入查询):
CURRENT_TIMESTAMP`<<<<here , $status
并且需要删除这个/最好在 mysql 中将该列设置为 on_update_current_timestamp
$status
需要在 ' ' 中,我想 $id
是一个整数,所以你可以不带 ' '。
您正在混合使用 mysql_ 和 mysqli_,我强烈建议在 mysqli_ 中重写整个代码,特别是对于您的插入语句,您确实应该使用准备好的语句和 mysqli_。 mysql_ 已贬值且不安全。你对 sql 注入(inject)持开放态度
为什么设置 id = NULL ?这应该是一个自动递增字段,您不应在查询中将其设置为 null。
如果您将对象数据放入数据库,我会使用 '{$customer->id}'
或设置
$customer_id = $customer->id;
在您查询之前,可以更轻松地检查您的查询
你不需要指定
INSERT INTO **'database2'**.
订单
数据库 2,数据库已被选中 - 再次说明:改用 mysqli_ 和准备好的语句!
例子:
$customer_id = $customer->id;
$charge_id = $charge->id;
$stmt = $sql->prepare("INSERT INTO `orders` (`email`, `name`, `qty`, `product`, `amount`, `stripe_customer_id`, `stripe_charge_id`, `address1`, `address2`, `city`, `state`, `zip`, `status`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt->bind_param('ssissssssssss', $email,$cardName, $qty, $product, $amountReadable, $customer_id, $charge_id, $cardAddress1, $cardAddress2, $cardCity, $cardState, $cardZipcode, $status);
$stmt->execute();
如果这样做,您需要为 mysqli_ 而不是 mysql_ 设置连接
block 1:
<?php
if ($charge->paid == true) {
$amountReadable = $amount / 100; // to add in decimal points
echo '<div class="alert alert-success">Your card was successfully billed for $' . $amountReadable . '</div>';
$status = "paid";
}
第 2 block :
<?php
$connect = new mysqli("localhost",DB_USER,DB_PASS,DB_NAME);
$customer_id = $customer->id;
$charge_id = $charge->id;
$stmt = $connect->prepare("INSERT INTO orders (`email`, `name`, `qty`, `product`, `amount`, `stripe_customer_id`, `stripe_charge_id`, `address1`, `address2`, `city`, `state`, `zip`, `status`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt->bind_param('ssissssssssss', $email,$cardName, $qty, $product, $amountReadable, $customer->id, $charge->id, $cardAddress1, $cardAddress2, $cardCity, $cardState, $cardZipcode, $status);
$stmt->execute();
$connect->close();
//insert into db for admin
$connect = new mysqli("--------","------","-------","--------");
$customer_id = $customer->id;
$charge_id = $charge->id;
$stmt = $connect->prepare("INSERT INTO `orders` (`email`, `name`, `qty`, `product`, `amount`, `stripe_customer_id`, `stripe_charge_id`, `address1`, `address2`, `city`, `state`, `zip`, `status`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt->bind_param('ssissssssssss', $email,$cardName, $qty, $product, $amountReadable, $customer_id, $charge_id, $cardAddress1, $cardAddress2, $cardCity, $cardState, $cardZipcode, $status);
$stmt->execute();
第 3 block :
$con = new mysqli("--------","------","-------","--------");
$query = "SELECT * FROM orders";
if ($result = $con->query($query))
{
echo "<table border='1' data-toggle='table'>
<tr>
<th>id</th>
<th>email</th>
<th>name</th>
<th>qty</th>
<th>product</th>
<th>amount</th>
<th>address1</th>
<th>address2</th>
<th>city</th>
<th>state</th>
<th>zip</th>
<th>status</th>
</tr>";
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['qty'] . "</td>";
echo "<td>" . $row['product'] . "</td>";
echo "<td>" . $row['amount'] . "</td>";
echo "<td>" . $row['address1'] . "</td>";
echo "<td>" . $row['address2'] . "</td>";
echo "<td>" . $row['city'] . "</td>";
echo "<td>" . $row['state'] . "</td>";
echo "<td>" . $row['zip'] . "</td>";
echo "<td>" . $row['status'] . "</td>";
echo "<td><form action='markshipped.php' method='POST'><input type='hidden' name='id' value='" . $row["id"] . "'/><input type='submit' name='submit-btn' value='Mark Item Shipped' /></form></td>";
echo "</tr>";
}}
echo "</table>";
第 4 block :
$con= new mysqli("----","----","----","----");
// Check connection
$id = $_POST['id'];
$stmt = $con->prepare("UPDATE orders SET status = 'shipped' WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$con->close();
关于php - 两个错误 - 在自定义管理面板上将一个项目标记为带有按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26616333/
我知道这在 Linux 上是可能的。我尝试使用 open("E:", 0); 和 open("E:\\", 0); 但它返回为 -1。我想将 DVD 作为一个大文件来读取,而不是将其用作文件系统。 最
我正在尝试编译一个包含 CUDA 代码的小型库。 我已成功将其编译为共享库,但我真正需要的是静态库。 我有两个源文件: main.c:包含一个用C编写的测试函数。我用gcc编译这个文件 mai
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我正在使用 MingW 在 Windows 上编写 C 程序,并希望使用 EXPAT XML 库。我想静态编译我的程序,所以我需要静态 .a 库。 有什么方法可以将 EXPAT 编译成 Windows
我想将结果限制为 KEY_HOMEID 等于 journalId 的结果。我已经研究了几天,如有任何帮助,我们将不胜感激。 public Cursor fetchAllNotes(String jou
我一直在寻找这个信息,但是由于可以通过 homebrew 和 pip 安装额外的包和 python 版本,我感觉我的环境很乱向上。此外,很久以前,我用 sudo pip install 和 sudo
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在尝试合并目录中的所有 *.pdf : gswin64c -q -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=Total_Files.pdf -dBATCH *
所以我有一个简单的图像缩略图着陆页,例如: 在我的网站上,4 个并排显示在桌面上。如何强制它们在移动设备 View 中成对出现在一行中? 所以:桌面: #### 手机: ## ## 最佳答案
我正在使用 Ubuntu 21.04。我已删除 /usr/bin/python3和 /usr/lib/python3/因为某些软件包在二进制文件中出现错误。我的意思是重新安装python3到一个新的状
是否可以在 Windows 上使用 gyp 将 googles v8 构建为共享库(msvc 2012)?我试过的一切都不起作用。我试过的: python build\gyp_v8 -Dcompone
我需要将 rubygems 从 1.3.5 更新到 1.4.2 但显然 rubygems update 只是将您更新到最新版本 如何更新到 1.4.2? 最佳答案 您可以使用 RVM 安装特定
我还没有找到太多关于它的信息,但我看到了一些提示,表明可以在 iPhone 应用程序中使用 NSTask。如果可能的话,我将如何去做? 我不想越狱我的 iPhone,但我正在开发的应用程序仅供内部使用
我在 UIWebView 中有一个 map 图像。它默认加载在左上角。我希望它在 UIWebView 的中心初始化。 有人知道怎么做吗? 谢谢! 最佳答案 如果 map 图像是页面中唯一的内容,它是否
如何公开 NodePort 类型的服务上网没有 使用类型 LoadBalancer ?我发现的每个资源都是通过使用负载均衡器来完成的。但我不希望负载平衡对我的用例来说既昂贵又不必要,因为我正在运行 p
是否可以将 View 变成可编辑的,例如 this image ? 我知道我可以使用 GridView 来做到这一点。但是,我正在尝试使用 TableRows 来做到这一点,这可能吗? 编辑:我真正想
假设我已将 Heroku 应用程序扩展为 1 个工作进程,但如何指定具有特定名称的 rake 任务应作为工作进程运行? 最佳答案 在你的项目中创建一个 Procfile,然后像这样将 rake 任务放
目前,我在 GitHub 上一个项目的 README.md 文件中使用此 Markdown 文本: See the docs of [testthat][3] on how to write unit
我正在尝试使用一些到 uint8_t 的转换将 IPv4 转换为 IPv6。我知道 IPv4 有 4 个字节,IPv6 有 2 个字节的 16 个无符号整数,但我找不到它们转换的方法。 #includ
我是编程新手,目前正在学习 C。您能帮我解决以下案例吗? 一个例子是,如果用户输入“cbamike”,我想将其分成两个字符串:cba 和 mike。 我尝试了下面的代码,但它不起作用: #includ
我是一名优秀的程序员,十分优秀!