我正在尝试使用两个不同的查询将数据存储在两个表中。
其中一个运行良好,但另一个没有保存任何东西。这两个查询是整页脚本的一部分。这两种情况下的第一个查询都是脚本的一部分,运行良好。第二个查询是我写的,用来记录用户点击量。
actcompetition的表结构。。表名是actcontest而不是act_contest,这是复制/粘贴错误:〔更正〕
userid varchar(50)varchar类型(50)点int(10)日期
案例1:
工作查询:
$sql = $Db1->query('Insert into ptcwalllogs (userid, user_earned)
values ('.$credituser.','.$rate.')');
查询问题:
$sqlact = $Db1->query('Insert into actcontest (userid, type, points, date)
values ('$username','ptcwall',6,now())');
案例2:
工作查询:
$Db1->query("INSERT INTO `likesasapaddon` (user_id, page_id,date)
VALUES('{$thismemberinfo[userid]}', '{$get['pageid']}',NOW())");
查询问题:
$Db1->query("INSERT INTO `actcontest` (userid, type, points, date)
VALUES ('$username','facebook',6,now())");
在这两种情况下,我都希望将值存储在同一个表中。
以下是案例1的脚本文件:
这是从其中一个提供程序回发的。
<?php
$date1 = date('Y-m-d');
include("config.php");
include("includes/mysql.php");
$Db1 = new DB_sql;
$Db1->connect($DBHost, $DBDatabase, $DBUser, $DBPassword);
$your_pwd = ""; /* Postback Password */
$vip=getenv('REMOTE_ADDR');
$sent_pw = $_GET['pwd'];
$credited = intval($_GET['c']);
$credituser = intval($_GET['usr']);
$rate = trim($_GET['r']);
$type = intval($_GET['t']);
$allowed_ip = array('72.52.253.202');//PTCWall's IPS.
if(in_array($vip, $allowed_ip) && $sent_pw == $your_pwd)
{
if($credited == '1')
{
if($type == '1')
{
$run = $Db1->query('UPDATE user SET balance=balance+'.$rate.' WHERE userid = '.$credituser);
// This line below is used to store clicks locally
$sql = $Db1->query('Insert into ptcwalllogs (userid, user_earned) values ('.$credituser.','.$rate.')');
$sqlact = $Db1->query("Insert into actcontest (userid, type, points, date)
values ('".mysqli_real_escape_string($username)."','ptcwall',6,now())");
// $sqlact = $Db1->query('Insert into actcontest (userid, type, points, date) values ("lorry","ptcwall",6,now())');
if($run)
{
exit('ok');
} else{
exit('issue');
}
}elseif($type == '2'){
$run = $Db1->query('UPDATE user SET points=points+'.$rate.' WHERE userid = '.$credituser);
if($run)
{
exit('ok');
} else{
exit('issue');
}
}
}elseif($credited == '2')
{
if($type == '1')
{
$run = $Db1->query('UPDATE user SET balance=balance-'.$rate.' WHERE userid = '.$credituser);
if($run)
{
exit('ok');
} else{
exit('issue');
}
}elseif($type == '2'){
$run = $Db1->query('UPDATE user SET points=points-'.$rate.' WHERE userid = '.$credituser);
if($run)
{
exit('ok');
} else{
exit('issue');
}
}
}
}
else{
die();
}
//FILE 03302014
?>
Var转储后:
保存在单独的文件中。
daata.php
<?php
$sqlact = $Db1->query("Insert into actcontest (userid, type, points, date)
values ('".mysqli_real_escape_string($username)."','ptcwall',6,now())");
var_dump($sqlact);
echo " success asdasdasdasdasdasdasdasdas " ;
?>
错误:
警告:mysqli_real_escape_string()只需要2个参数,其中1个在中给定/第3行xxxx/daata.php布尔(真)
请引导。
警告:mysqli_real_escape_string()只需要2个参数,其中1个在中给定/第3行xxxx/daata.php布尔(真)
此警告意味着您需要将DB连接传递给它,这是它所期望的第二个参数。
('".mysqli_real_escape_string($Db1, $username)."','ptcwall',6,now())")
查阅文件:
- http://php.net/manual/en/mysqli.real-escape-string.php
$sqlact = $Db1->query("Insert into act_contest (userid, type, points, date)
values ('".mysqli_real_escape_string($Db1, $username)."','ptcwall',6,now())");
$Db1->query("INSERT INTO `actcontest` (userid, type, points, date)
VALUES ('".mysqli_real_escape_string($Db1, $username)."','facebook',6,now())");
此外,请确保表中确实存在所有列。
添加:
die('There was an error running the query [' . $Db1->error . ']');
如果有错误,这将是一个信号。
即:
if($run)
{
exit('ok');
} else{
die('There was an error running the query [' . $Db1->error . ']');
}
- 对所有查询都使用相同的方法
将错误报告添加到文件顶部也是一件好事,这将在生产测试期间有所帮助。
error_reporting(E_ALL);
ini_set('display_errors', 1);
CCD_ 1或任何其他变量是否未定义。
以下是正在运行的查询:
$sqlact = $Db1->query("Insert into act_contest (userid, type, points, date)
values ('".mysqli_real_escape_string($username)."','ptcwall',6,now())");
$Db1->query("INSERT INTO `actcontest` (userid, type, points, date)
VALUES ('".mysqli_real_escape_string($username)."','facebook',6,now())");
注意:对于SQL查询中的字符串,始终使用mysqli_real_escape_string(或等效的字符串)。否则你的应用程序很快就会被SQL注入攻击。
你确定你的表名"actcontest"吗?在第一种情况下,你在里面放了一个下划线,而不是在第二种情况下。你也确定这个表模式:userid,type,points和date吗?也许你打错了字?如果我是你,我会先检查所有这些。