嘿,我在我的数据库中插入一些数据有问题:
define('SECURE', true);
include "storescripts/connect_to_mysql.php";
$txn_id = 123456789101234567;
$payer_email = "irgendwas@gmx.de";
$mc_gross = "amount";
$sql = "SELECT COUNT(*) AS count FROM `trans` WHERE `txn_id` = $txn_id";
$q = mysqli_query($mysqli, $sql);
$f = mysqli_fetch_array($q);
if($f['count'] > 0) {
echo "Transaction already processed";
} else {
$insert = mysqli_query($mysqli, "INSERT INTO trans (`txn_id`, `payer_email`,`mc_gross`)
VALUES ($txn_id,$payer_email,$mc_gross)");
if($insert = 1) {
echo "inserted";
} else {
echo "not inserted";
}
}
结果我得到:“插入”,但我的数据库中没有数据。任何人都可以帮助我吗?错误在哪里?
编辑:这是我的表:
define('SECURE', true);
require "connect_to_mysql.php";
$sqlCommand = "CREATE TABLE trans (
id int(11) NOT NULL auto_increment,
txn_id varchar(255) NOT NULL,
payer_email varchar(255) NOT NULL,
mc_gross int(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (txn_id))";
if ($mysqli->query($sqlCommand)) {
echo "Your trans table has been created successfully!";
} else {
echo "CRITICAL ERROR;".$mysqli->error;
}
答案 0 :(得分:0)
你被“插入”的原因是你的if将变量设置为1并且结果为true。使用double equals进行比较。
右:
if ($insert == 1)
错误:
if ($insert = 1)
就你的sql而言,你的查询似乎有错误。 $ txn_id和$ payer_email都是varchars,它们要求你使用引号,因为它是一个字符串
答案 1 :(得分:0)
SQL语句中的字符串文字需要用单引号括起来。生成的SQL文本如下所示:
VALUES (123456789101234567,someone@email.de,amount)
但它应该看起来像这样:
VALUES ('123456789101234567','someone@email.de','amount')
^ ^ ^ ^ ^ ^
BTW ...当评估为整数时,该字符串文字'amount'
将被解释为零。
您应该考虑将预准备语句与绑定变量一起使用,而不是在SQL文本中包含变量。 (StackOverflow上有很多例子。)
检查mysqli_query是否成功:
$sql = "INSERT INTO ... ";
if ( mysqli_query($mysqli, $sql) ) {
// sql statement executed without error
} else {
// sql statement execution raised an error
}