我有点困惑,为什么它不起作用。
我想要的是控制数据库如果对于ex 2012-02-21存在于DB中删除它并再次插入但是它不起作用
我的完整代码是,但是语句不起作用:S
$ga->requestAccountData();
$mysql = new mysql();
$mysql->connect();
// $startDate = date("Y-m-d");
$startDate = "2012-02-21";
$dbResult = mysql_query("select * from profiles where profile_Date='".$startDate."'");
$query = mysql_num_rows($dbResult);
if($query > 0)
{
mysql_query("delete from profiles where profile_Date='".$startDate."'");
foreach ($ga->getResults() as $result) {
$ga->requestReportData($result->getProfileId(),array('eventCategory','eventAction'),array('totalEvents'),$sort_metric=null,$filter='eventAction==InitPlayer',$start_date=$startDate,$end_date=$startDate);
foreach($ga->getResults() as $result2)
{
echo $result;
echo $result2->geteventCategory()."<br />";
echo $result2->geteventAction();
echo $result2->gettotalEvents();
"<br />";
"<br />";
"<br />";
$mysql->query("insert into profiles values(" . $result->getProfileId() . ",'" . $result . "','".$result2->geteventCategory()."','".$result2->geteventAction()."','".$result2->gettotalEvents()."','".$startDate."')");
}
}
}
else
{
foreach ($ga->getResults() as $result) {
$ga->requestReportData($result->getProfileId(),array('eventCategory','eventAction'),array('totalEvents'),$sort_metric=null,$filter='eventAction==InitPlayer',$start_date=$startDate,$end_date=$startDate);
foreach($ga->getResults() as $result2)
{
echo $result;
echo $result2->geteventCategory()."<br />";
echo $result2->geteventAction();
echo $result2->gettotalEvents();
"<br />";
"<br />";
"<br />";
$mysql->query("insert into profiles values(" . $result->getProfileId() . ",'" . $result . "','".$result2->geteventCategory()."','".$result2->geteventAction()."','".$result2->gettotalEvents()."','".$startDate."')");
}
}
}
答案 0 :(得分:4)
您应该使用mysql_num_rows
来计算所选结果,而不是mysql_affected_rows
,这适用于更改数据的查询(插入,更新,删除等)
$result = mysql_query("select * from profiles where profile_Date='".$startDate."'");
$count = mysql_num_rows($result);
if($count > 0) {
...
}
答案 1 :(得分:1)
为什么需要先删除然后插入?您也可以使用更新查询。此外,profile_Date字段的数据类型是什么?是设定日期还是日期和时间?
答案 2 :(得分:1)
您可以使用MySQL的REPLACE
功能(docs)。
它基本上与INSERT
类似,但例外情况是,如果数据库中已存在具有相同键的值,则首先将删除现有值,然后将新值作为完全新条目插入。如果没有现有值,则其行为类似于INSERT
。
UPDATE
UPDATE
的差异隐藏在细节中:
UPDATE
只会更新提供的值,INSERT
其他列将获得默认值(实际示例:字段名称timestamp_created
,默认值为{{1} }将在CURRENT_TIMESTAMP
语句中保持不变,但会在UPDATE
语句中显示当前时间)