好的,所以我相信很多人已经问过这个,但我还没有看到任何真正明确的答案。我需要捕获一个我已经有值的变量....这是我的例子:
<?php
$data_p = mysql_query("SELECT * FROM `dreams`") or die(mysql_error());
while($info = mysql_fetch_array( $data_p )) {
<table>
<tr>
<td><?php echo $info['first']; ?> <?php echo $info['last']; ?></td>
<td><?php echo $info['city']; ?> <?php echo $info['state']; ?></td>
<td><?php echo $info['dream']; ?></td>
<td>$<?php echo $info['donation_goal']; ?></td>
<td>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2HGLK2WGELUNG">
****************<input type="hidden" name="dream_id" value="<?php echo $info['dream_id']; ?>">
<input type="image" src="images/donatebutton.png" id="donate" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
</td>
</tr>
</table
}
这显示为:
http://www.dreamsurreal.com/images/example.jpg
包含所有 * * 的行是我遇到问题的地方。
我在paypal.com上创建了按钮,但我自己添加了 * 行。
我需要将此变量传递给paypal,以便在通过ipn.php更新数据库时。这是ipn.php的MYSQL更新区域:
// add this order to a table of completed orders
$payer_email = mysql_real_escape_string($_POST['payer_email']);
$mc_gross = mysql_real_escape_string($_POST['mc_gross']);
$dream_id = $_POST['dream_id'];
$sql = "INSERT INTO orders VALUES
(NULL, '$txn_id', '$payer_email', '$mc_gross', '$dream_id')";
但是由于某种原因,即使我添加了$ dream_id = $ _POST ['dream_id']并且还将$ dream_id添加到mysql插入的INSERT部分,它也没有插入实际变量,它只是使它为0
我希望我能够为每个人提供足够的清晰度,请帮助我们了解如何使其正常运行。
答案 0 :(得分:0)
更改
$dream_id = $_POST['dream_id'];
到
$dream_id = (int)$_POST['dream_id'];
如果仔细观察(如果我没记错的话),PayPal的自定义值字段末尾会有一个点。将变量类型转换为整数可以解决此问题以及防范SQL injection。您可以在PHP here中阅读有关类型转换的更多信息。
答案 1 :(得分:0)
让每个人都工作....好吧所以这就是它的完成方式:
这是我们的按钮脚本,没有添加变量....
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2HGLK2WGELUNG">
<input type="image" src="images/donatebutton.png" id="donate" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
将此行添加到我们的表单中....
<input type="hidden" name="item_number" value="<?php echo $MY_VARIABLE; ?>">
将$ MY_VARIABLE替换为您自己的变量。
我们的按钮新代码如下所示
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2HGLK2WGELUNG">
<input type="hidden" name="item_number" value="<?php echo $MY_VARIABLE; ?>">
<input type="image" src="images/donatebutton.png" id="donate" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
之后,在你的ipn.php中改变这个区域
// add this order to a table of completed orders
$payer_email = mysql_real_escape_string($_POST['payer_email']);
$mc_gross = mysql_real_escape_string($_POST['mc_gross']);
$sql = "INSERT INTO orders VALUES
(NULL, '$txn_id', '$payer_email', '$mc_gross')";
将这些添加到其中(我使用整数,所以我只是确保它的类型正确)
$MY_VARIABLE = (int)$_POST['item_number'];
和
$sql = "INSERT INTO orders VALUES
(NULL, '$txn_id', '$payer_email', '$mc_gross', '$MY_VARIABLE')";
完成所有修复后,整个区域应如下所示:
// add this order to a table of completed orders
$payer_email = mysql_real_escape_string($_POST['payer_email']);
$mc_gross = mysql_real_escape_string($_POST['mc_gross']);
$dream_id = (int)$_POST['item_number'];
$sql = "INSERT INTO orders VALUES
(NULL, '$txn_id', '$payer_email', '$mc_gross', '$dream_id')";
我希望这一切都有所帮助,谢谢你的时间。