【问题标题】:Insert SQL statement error插入 SQL 语句错误
【发布时间】:2016-07-30 21:04:20
【问题描述】:

您好我正在尝试使用插入语句将数据插入数据库。所以基本上,用户将数据输入到表单中,然后一旦单击提交按钮,它就意味着获取表属性的 property_id。 我的代码是这样的:

<?php
$id = intval($_GET['id']);
$query = mysql_query('SELECT * FROM review WHERE property_id="'.$id.'"');

if(isset($_POST['submit']))
{
$review = mysqli_real_escape_string($mysqli, $_POST['review']);


 if(mysqli_query($mysqli, "INSERT INTO review(review) VALUES ('$review')"))
  {
  ?>
        <script>alert('Successfully Updated ');</script>
        <?php
 }
 else
 {
  ?>
        <script>alert('Error...');</script>
        <?php
 }


}
?>

页面顶部是我的其他代码,如下所示:

    <?php

include_once '../db/dbconnect.php';

$id = intval($_GET['id']);
$sql = 'SELECT* FROM property WHERE property_id="'.$id.'"';
$result = mysqli_query($mysqli, $sql);

$row=mysqli_fetch_array($result);

?>

上面的代码基本上显示了该单个属性的所有数据。任何帮助都会很棒。

【问题讨论】:

  • "INSERT INTO review(review) VALUES ('$review')")) 在这一行中,您不需要在$review 周围使用连接运算符. 来构建INSERT 语句吗?
  • @JonathonOgden 什么是连接运算符?
  • . 是;您可以使用它来构建类似于代码的这一部分的字符串:WHERE property_id="'.$id.'"' 注意$id 的任一侧的.,这就是您将$id 的值添加到SELECT 中的方式。如果您希望构建有效的 SQL 语句,您显然需要对 $review 执行相同的操作。
  • @JonathonOgden 例如 if(mysqli_query($mysqli, "INSERT INTO review(review) VALUES = "'.$review.'""))
  • 您正在混合使用 mysql_ 和 mysqli_ API。在您的第一个 sn-p 中,您使用的是 mysql_query()

标签: sql mysqli sql-insert


【解决方案1】:

您的代码中有几个错误:

$id = intval($_GET['id']);
$query = mysql_query('SELECT * FROM review WHERE property_id="'.$id.'"');

mysql_* 函数在 PHP 5 中已弃用,并在 PHP 7 中完全删除。不要使用它们!
此外,mysql_*mysqli_* 函数不能一起使用。
还有一个错误:您正在执行 SELECT 查询,但您从未获取结果!
注意:您不需要连接 $id。它使用大量无用的单引号和双引号使代码更难阅读,并增加了拼写错误的可能性。 Just enclose the variables in a double-quoted string.
您正在将 $id 转换为 int 值。如果字段property_id 是整数,则查询中无需在$id 周围加上单引号。

更新的 sn-p

$id = intval($_GET['id']);
$query = mysqli_query($mysqli, "SELECT * FROM review WHERE property_id=$id") or die(mysqli_error($mysqli));
while($r = $query->fetch_assoc()) {
   // do something here with the current record $r
}

您的代码

if(mysqli_query($mysqli, "INSERT INTO review(review) VALUES ('$review')"))
[...]
<script>alert('Error...');</script>

在开发时,您应该显示(或写入日志文件)来自每个失败查询的 MySQL 错误消息。这将使调试变得更加容易:

<script>alert('Error: <?= mysqli_error($mysqli) ?>');</script>

【讨论】:

    猜你喜欢
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多