【发布时间】:2013-08-07 01:41:07
【问题描述】:
你可以用 mysqli 做这样的事情吗?我什么都没进去。
// Place the transaction into the database
$sql = "INSERT INTO transactions (product_id_array, email, first_name, last_name, payment_date, mc_gross, payment_currency, txn_id, receiver_email, payment_type, payment_status, txn_type, payer_status, address_street, address_city, address_state, address_zip, address_country, address_status, notify_version, verify_sign, payer_id, mc_currency, mc_fee, ip, username)
VALUES('$custom','$payer_email','$first_name','$last_name','$payment_date','$mc_gross','$payment_currency','$txn_id','$receiver_email','$payment_type','$payment_status','$txn_type','$payer_status','$address_street','$address_city','$address_state','$address_zip','$address_country','$address_status','$notify_version','$verify_sign','$payer_id','$mc_currency','$mc_fee','$ip','$user_name')";
$uid = mysqli_insert_id($db_conx);
$sql .= "INSERT INTO courseprogress (id, product_id_array, email, username) VALUES ('$uid','$custom','$payer_email','$username')";
$query = mysqli_query($db_conx, $sql);
//
我尝试过使用这样的两个单独的语句
$sql = "INSERT INTO transactions (product_id_array, email, first_name, last_name, payment_date, mc_gross, payment_currency, txn_id, receiver_email, payment_type, payment_status, txn_type, payer_status, address_street, address_city, address_state, address_zip, address_country, address_status, notify_version, verify_sign, payer_id, mc_currency, mc_fee, ip, username)
VALUES('$custom','$payer_email','$first_name','$last_name','$payment_date','$mc_gross','$payment_currency','$txn_id','$receiver_email','$payment_type','$payment_status','$txn_type','$payer_status','$address_street','$address_city','$address_state','$address_zip','$address_country','$address_status','$notify_version','$verify_sign','$payer_id','$mc_currency','$mc_fee','$ip','$user_name')";
$query = mysqli_query($db_conx, $sql);
//added as addition for newsletter signup below
$uid = mysqli_insert_id($db_conx);
$sqlemail = "INSERT INTO courseprogress (id, product_id_array, email,username) VALUES ('$uid','$custom','$payer_email','$username')";
$query = mysqli_query($db_conx, $sqlemail);
//
我只能在较低的尝试中获得第一个通过...有什么建议吗?
【问题讨论】:
-
看起来不错。在这种情况下,您从第二个查询中得到什么错误?检查结果是否有错误。此外,您很可能容易受到 SQL 注入的攻击。确保您的字符串被正确转义或(甚至更好)使用参数化语句。
-
@viraptor 感谢您提供信息...我的问题是包含此内容的脚本在访问页面时未运行。它发生在我的网站之外(不是技术上的)。它是 IPN 的一部分,当用户在 paypal 上付款时,它就会启动。所以我无法解决错误,除非它是 php 本身......没有 mysqli statemtns。我只知道第二个语句没有插入。
-
您可以在您的 php.ini 中打开错误和警告日志记录。无论您是通过 cli 还是 Web 服务器运行脚本(我不明白您指的是哪种情况),都会记录任何问题。或者,您可以自己记录错误。检查
mysqli_query(...)的结果是否为 === FALSE。如果是,打印/记录 php.net/manual/en/mysqli.error.php 的结果 - 这会告诉你出了什么问题。 -
@viraptor 你能给我一个例子来说明你的意思吗?我不明白您发送的参考链接。
-
@viraptor 是这样的吗?
if (!$mysqli->error) { printf("Errormessage: %s\n", $mysqli->error); }有没有办法打印到另一页?正如我所说,该页面不是可以手动打开的页面。它必须由paypal触发,我从来没有看到它。