2016-07-30 124 views
-1

嗨我试图插入数据到数据库使用插入语句。所以基本上,用户将数据输入到表单中,然后一旦单击提交按钮,它就意味着获取表Property的property_id。 我的代码是这样的:插入SQL语句错误

<?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); 

?> 

上述基本代码显示为个人财产的所有数据。任何帮助都会很棒。

+0

' “INSERT INTO审查(复审)VALUES( '$审查')”))',难道你需要连接运算符'.'左右'$ review'来构建INSERT语句? –

+0

@JonathonOgden什么是concatation运算符? – Josh

+0

'.'是;你使用它来创建一个类似于你的代码部分的字符串:'WHERE property_id =''。$ id。'“''请注意'$ id'的任意一边,这就是添加'$ id'到你的'SELECT'中。如果您希望构建有效的SQL语句,您显然需要对'$ review'执行相同的操作。 –

回答

0

在有你的代码有几个误区:

$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单引号。

更新片断

$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>