我正在尝试更新表行,使其具有随机数。现在,我可以使用phpMyAdmin实现这一点,并通过SQL查询运行它。但是,如果我尝试通过PHP调用运行相同的代码,那么它就不能工作。你知道为什么会是这样吗?我会如何纠正呢?
表名为:num_image
列名:rownum
这是我使用的SQL:
SET @rownum := 0;
UPDATE num_image SET rownum = (@rownum:=@rownum+1) ORDER BY RAND();我尝试在我的php代码中输入它,如下所示:
<?php
// Connect to database
include 'DB.php';
$con = mysql_connect($host,$user,$pass);
$dbs = mysql_select_db($databaseName, $con);
// Assigns a new random number with no duplicates to database for each rownum row.
$updaterownum = mysql_query("SET @rownum := 0; UPDATE num_image SET rownum = (@rownum:=@rownum+1) ORDER BY RAND();");
echo 'All rownums have been updated!';
?>我的数据库连接工作正常,因为我使用相同的其他数据库更新和插入。因此,我将范围缩小到如何在PHP调用中插入实际的SQL,并相信我必须编辑调用它的方式?
我肯定这是我错过的一件小事,虽然我很困惑。提前感谢!
发布于 2018-07-28 07:06:19
下面的抛光代码可以在PHP中完成这项工作。但是,正如注释中提到的那样,mysql扩展被废弃,并将在将来被删除。
<?php
// Connect to database
include 'DB.php';
$con = mysql_connect($host,$user,$pass);
$dbs = mysql_select_db($databaseName, $con);
if($con)
{
$updaterownum = mysql_query("SET @rownum := 0");
$updaterownum = mysql_query("UPDATE num_image SET rownum = (@rownum:=@rownum+1) ORDER BY RAND()");
if(mysql_affected_rows()>0)
{
echo 'All rownums have been updated!';
}
else
{
echo "Nothing changed after running update query!";
}
}
else
{
echo "Not able to connect";
}
?>发布于 2018-07-28 06:46:35
我在:http://php.net/manual/en/mysqli.quickstart.multiple-statement.php看到一份文件
以下是几句简短的台词:
MySQL允许在一个语句字符串中有多个语句。同时发送多个语句可以减少客户机-服务器往返,但需要特殊处理。
必须使用mysqli_multi_query()执行多个语句或多个查询。语句字符串的单个语句用分号分隔。然后,必须获取执行语句返回的所有结果集。
MySQL服务器允许在一个多个语句中具有返回结果集的语句和不返回结果集的语句。
https://stackoverflow.com/questions/51568772
复制相似问题