插入SQL语句错误

插入SQL语句错误,sql,mysqli,sql-insert,Sql,Mysqli,Sql Insert,您好,我正在尝试使用insert语句将数据插入数据库。因此,基本上,用户将数据输入到表单中,然后单击submit按钮就意味着获取表属性的属性_id。 我的代码是: <?php $id = intval($_GET['id']); $query = mysql_query('SELECT * FROM review WHERE property_id="'.$id.'"'); if(isset($_POST['submit'])) { $review = mysqli_real_escap

您好,我正在尝试使用insert语句将数据插入数据库。因此,基本上,用户将数据输入到表单中,然后单击submit按钮就意味着获取表属性的属性_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
 }


}
?>

您的代码中有几个错误:

$id = intval($_GET['id']);
$query = mysql_query('SELECT * FROM review WHERE property_id="'.$id.'"');
PHP 5中不推荐使用
mysql.*
函数,而PHP 7中完全删除了这些函数。不要用它们
此外,不可能同时使用
mysql.*
mysqli.*
函数。
还有一个错误:您正在执行SELECT查询,但从未获取结果
注意:不需要连接
$id
。大量无用的单引号和双引号使代码更难阅读,并增加了拼写错误的可能性
您正在将
$id
强制转换为int值。如果字段
property\u id
为整数,则无需在查询中的
$id
周围加单引号

更新的代码片段

$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>
您的代码

$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>
if(mysqli_查询($mysqli,“插入到审阅(review)值(“$review”)中”)
[...]
警报('错误…');
开发时,应该显示(或写入日志文件)来自每个失败查询的MySQL错误消息。这将使调试更加容易:

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

“INSERT-INTO-review(review)VALUES(“$review”)”)
在这行中,您不需要围绕
$review
的串联运算符
来构建
INSERT
语句吗?@JonathonOgden什么是concatation运算符?
是;您可以使用它来构建一个类似于代码这一部分的字符串:
WHERE属性_id=“'.$id.”“
请注意
任一侧,这就是如何将
$id
的值添加到
选择中的方法。如果您希望生成有效的SQL语句,显然需要对
$review
执行相同的操作。@JonathonOgden因此,例如,如果(mysqli_query($mysqli,“INSERT INTO review(review)VALUES=“.”.$review.”)混合了mysql_u和mysqli_uAPI。在第一个代码片段中,您使用的是
mysql\u query()