2017-01-22 118 views
-3

我想在php中做一个查询,在页面上输出数据,然后在数据库中修改它。php更新sql和查询

我该怎么做?

目前,我不喜欢这样,但它没有作用:

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

$sql = "SELECT * FROM pics WHERE id = '$id'"; 
$result = $conn->query($sql); 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     $dir = $row["dir"]; 
     $likes = $row["likes"]; 
    } 

$sqlq = "UPDATE pics SET likes='$likes+1' WHERE id='$id'"; 

$conn->query($sqlq); 

$conn->close(); 

但类似剂量不添加到数据库中。

+1

以何种方式失败? PHP日志中是否有错误?你为什么不检查数据库查询中的错误? – David

+0

您的更新失败 –

+0

没有错误日志。一切正常,只是当我查看数据库时,喜欢的值不会被修改。而且它在页面上也没有修改。 –

回答

1

如果您呼应$ sqlq出使用

echo $sqlq; 

,你会看到'$likes+1'没有做你的期望。

你真的可以做

$sqlq = "UPDATE pics SET likes=likes+1 WHERE id='$id'"; 

从而消除两个用户在德同时覆盖彼此更新数据库的任何风险,简化它。

但是你应该真的使用“参数化查询”来解决所有问题(并且可能会更安全)。检查手册中的示例http://php.net/manual/en/mysqli-stmt.bind-param.php

+0

谢谢!现在它工作了! –

+0

不客气。如果您采取了“快速修复”的措施,请花费5分钟后查看参数化查询(bind-param)链接,以使您的代码更安全,更易于读取/调试。 – Robbie