使用PHP将值插入MySQL表

时间:2010-12-02 07:02:05

标签: php mysql

我有一个PHP数组,其中包含多个值,对应不同的横幅广告。假设$ a被调用,这将是数组中的第0个值。我在表 impressions 中有一个字段,同样称为 0 ,它包含一个整数。我想从这个字段中调用这个整数,递增它,然后把它放回到同一行。

过度简化。我想调出当前广告所显示的展示次数。假设广告$ a有500次展示。我想将这个数字增加到501,然后把它放回到表格中。

我希望我解释得很好。到目前为止,这是我的代码:

$ads = array($a, $b, $c, $d, $e, $f, $g, $h, $i, $j);
$rand = rand(0,9);
print($ads[$rand]);
$writeVar = $rand;

$con = mysql_connect("localhost","delives0_ads","ads");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("delives0_ads", $con);
$sqlCmd = mysql_query("SELECT * FROM impressions ('$writeVar');");
$sqlCmd++;
mysql_query("INSERT INTO impressions ('$writeVar`) VALUES ('$sqlCmd');");
mysql_close($con);

编辑:这是SQL

中的结构
CREATE TABLE IF NOT EXISTS `impressions` (
  `0` int(11) NOT NULL,
  `1` int(11) NOT NULL,
  `2` int(11) NOT NULL,
  `3` int(11) NOT NULL,
  `4` int(11) NOT NULL,
  `5` int(11) NOT NULL,
  `6` int(11) NOT NULL,
  `7` int(11) NOT NULL,
  `8` int(11) NOT NULL,
  `9` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

3 个答案:

答案 0 :(得分:5)

您不需要SELECT和UPDATE查询来增加表中的列。

只需发送一个UPDATE查询[示例]:

UPDATE impressions SET views = views + 1 WHERE ad_id = 3

丢弃你写的所有代码,因为你发布的内容都不正确。绝对不要使用您设计的数据库表。

如果我可能会推荐一两本书:

http://www.amazon.com/Build-Database-Driven-Using-MySQL/dp/0980576814/ref=dp_ob_title_bk

http://www.amazon.com/Simply-SQL-Rudy-Limeback/dp/0980455251

答案 1 :(得分:0)

嗯...... $sqlCmd没有数据,在开始使用数据进行操作之前,你必须mysql_fetch_array();(这将从查询中获取数据)。

http://php.net/manual/en/function.mysql-fetch-array.php

另外,您的mysql_query();语法错误。请参阅手册:http://www.php.net/manual/en/function.mysql-query.php

编辑:

mysql_select_db("delives0_ads", $con);
$sqlCmd = mysql_query("SELECT * FROM impressions WHERE `something` = '$writeVar';"); // replace something with your needed identifier in database structure
$sqlCmd = mysql_fetch_array($sqlCmd); // will fetch data in array
$yourData = $sqlCmd['what_you_want_to_get_from_table']; // what_you_want..._table is the variable you want to increment.
$yourData++;
mysql_query("UPDATE impressions SET `yourvariable` = '$yourData' WHERE `something` = '$writeVar';"); // updates data
mysql_close($con);

如果您可以提供数据库结构,我们可以帮助您获得完美的脚本!

P.S。不知道这是否真的有效(无法测试,长时间没有使用普通的mysql语法),但我认为应该。 如果没有,问题出在$yourData = $sqlCmd[0]...,您只需删除[0]

答案 2 :(得分:-1)

一种偏离主题的东西,但仍然与你学习php / MySQL有关:

据我所知,当您进行查询时,最好添加如下的变量:'“。$ var。”'而不是'$ var'

为了更好地理解我所说的内容,我将在上面的代码中向您展示。所以而不是:

mysql_query("SELECT * FROM impressions ('$writeVar');");
你会得到这个:

mysql_query("SELECT * FROM impressions ('".$writeVar."');");

我不记得我在哪里读到这个,但它与优化查询速度有关。

相关问题