2016-03-01 72 views
-1

正如我在上一个关于cron工作的问题中所述,现在我正在尝试编写一个,但似乎遇到了问题。这是我得到的最接近的。我想更新数据库中的每个记录比现有记录更多。php更新记录重复区域

示例如果该字段为30,那么当此脚本运行时,它将变为31.但是我有多个字段,我希望所有字段都增加1。

这是我目前写的,但它不起作用,但我得到“记录更新成功”的回声,但没有任何变化。如果我将其更改为$ Age = $ Test,然后插入一个随机数作为ID,它将最终等于Test。如果我说$ Age = $ NewAge和随机ID,它会将我的数据库中的变量更改为302.我不知道它在哪里随机抽取302.

有什么建议吗?

这是我下面的代码:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "RR"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$sqlSelect = "SELECT id, Age FROM Horse"; 
$result = $conn->query($sqlSelect); 

do{ 
$id = $row['id']; 
$Age = $row['Age']; 
$NewAge = $Age + 1; 
$Test = 200; 


echo $id, ' ', $Age, ' ', $NewAge; ?> <br/> 

<?php 
$sqlUpdate = "UPDATE Horse SET Age='$NewAge' WHERE id='$id'"; 


} 
while($row = $result->fetch_assoc()); 


if ($conn->query($sqlUpdate) === TRUE) { 
echo "Record updated successfully"; 
} else { 
echo "Error updating record: " . $conn->error; 
} 

$conn->close(); 
?> 
+1

为什么不只是'更新马SET年龄=年龄+ 1'? – rjdown

+0

我假设你的“年龄”列是int?试试这个'更新马SET年龄=年龄+ 1 WHERE id ='$ id'' – roullie

+0

这根本不会导致任何改变。我试过了,不知道为什么不行。 @roullie –

回答

0

的问题是很模糊的,很难理解,但作为@rjdown说,这将在数据库中更新ALL行和1

增加 Age

注意:不需要从数据库中获取记录,也不需要循环它们。只有一行SQL会更新所有行。

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "RR"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$sqlUpdate = "UPDATE Horse SET Age = Age + 1"; 

if ($conn->query($sqlUpdate) === TRUE) { 
echo "All records updated successfully"; 
} else { 
echo "Error updating record: " . $conn->error; 
}