Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php更新sql和查询_Php_Mysql_Sql - Fatal编程技术网

php更新sql和查询

php更新sql和查询,php,mysql,sql,Php,Mysql,Sql,我想用php进行查询,在页面上输出数据,然后在数据库中修改它 我该怎么做 目前我是这样做的,但不起作用: $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FRO

我想用php进行查询,在页面上输出数据,然后在数据库中修改它

我该怎么做

目前我是这样做的,但不起作用:

$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();

但是类似的内容不会添加到数据库中。

如果使用

echo $sqlq;
您将看到,
“$likes+1”
并没有达到预期效果

你可以通过这样做来简化它

$sqlq = "UPDATE pics SET likes=likes+1 WHERE id='$id'";
这样就消除了两个用户同时更新数据库时互相覆盖的风险


但是,您确实应该使用“参数化查询”进行检查,因为这将解决您的所有问题(并且可能使您的查询更安全)。检查手册中的示例

以何种方式失败?PHP日志中是否有任何错误?为什么不检查数据库查询中的错误?更新失败没有错误日志。一切都正常,只是当我查看数据库时,likes值没有被修改。页面上也没有修改。不客气。如果您选择了“快速修复”,请在5分钟后查看参数化查询(bind param)链接,以使代码更安全,更易于阅读/调试。