$dblocation = "localhost";
$dbname = "xx";
$dbuser = "xx";
$dbpasswd = "xx";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
mysql_select_db($dbname, $dbcnx);
mysql_query("SET NAMES utf8");
mysql_query("SET COLLATION_CONNECTION=utf8_bin");
$num = mysql_query("select no from votes WHERE id='".$id."';");
$num2 = $num + 1;
$num3 = mysql_real_escape_string($num2);
mysql_query("UPDATE votes SET no='".$num3."' WHERE id=".$id.";");这是php代码。我想让它:
1)从"votes“表中"id”(INT)等于$id的行中获取"no“值(INT)
2)将该值递增1
3)将"votes“表的新值写入"id”(整数)等于$id的行
但不知何故,我的代码不能正常工作。有什么想法吗?
发布于 2011-06-04 01:32:32
对于初学者来说,应该去掉函数调用前面的@符号。这将抑制由给定语句引起的错误-并让您想知道哪里出了问题。当你在开发的时候,你想要你能得到的关于你的代码的所有信息,尤其是错误。因此,删除@ (错误抑制运算符)是第一步。
其次,无论何时查询数据库,都有两个步骤。首先调用mysql_query。然后,在确保mysql_query返回任何内容之后,对查询对象调用一个fetch类型的语句。查看mysql_query的文档:http://php.net/manual/en/function.mysql-query.php有一个很好、很简单的例子--看看你能不能找出你的代码出了什么问题。
抛开所有这些,不需要跳过所有这些障碍来递增数据库字段……
mysql_query('UPDATE votes SET no = no+1 WHERE id='.$id);作为参考,快速重写示例代码如下所示(使用您的方法,而不是我上面提到的方法):
$dblocation = "localhost";
$dbname = "xx";
$dbuser = "xx";
$dbpasswd = "xx";
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd);
// handle a problem connecting to the database. You probably want to do something nicer than just "die" an error message
if (!$dbcnx)
die('Error connecting to database');
mysql_select_db($dbname, $dbcnx);
// not strictly neccesary to do this
mysql_query("SET NAMES utf8");
mysql_query("SET COLLATION_CONNECTION=utf8_bin");
$query = mysql_query('SELECT `no` FROM `votes` WHERE `id`='.$id);
// again, you'll probably want to do something nicer than blat out a text error
if (!$query)
die('Record not found');
$num = mysql_fetch_assoc($query);
// type your number
$num = (int) $num['no'];
// increment it
$num++;
mysql_query('UPDATE `votes` SET `no`='.$num.' WHERE `id`='.$id);发布于 2011-06-04 01:30:09
这里有几个地方可能会出错-
可能没有正确连接到database
基本上,在开发过程中,您应该以最高的error_reporting级别运行代码。您将立即知道问题出在哪里(并将错误抑制操作符放在mysql_connect()前面--几乎没有充分的理由使用它)。
顺便说一句,没有理由为检索数字设置排序规则和字符集。这个完整的操作可以用一个更新查询来代替:
$query = "UPDATE votes SET no=no+1 WHERE id=" . (int) $id;发布于 2011-06-04 01:29:18
您错过了从结果中获取行:
$result= mysql_query("select no from votes WHERE id='".$id."';");
// you have to fetch a row from the result
$row = mysql_fetch_array($result);
// your first item in the array will be the value of 'no'
$num2 = $row[0] + 1;https://stackoverflow.com/questions/6230495
复制相似问题