2015-07-20 94 views
0

我试图在用户单击文件one.php中的链接后将数据插入到数据库中。因此,文件two.php包含以下代码:未将数据插入到数据库中的表格

$retrieve = "SELECT * FROM catalog WHERE id = '$_GET[id]'"; 
$results = mysqli_query($cnx, $retrieve); 
$row = mysqli_fetch_assoc($results); 
$count = mysqli_num_rows($results); 

所以上面的查询将得到使用$_GET[id]作为参考数据库中的信息。 这个完成之后,我想插入使用此代码在不同的表中检索到的信息:

$id = $row['id']; 
$title = $row['title']; 
$price = $row['price']; 
$session = session_id(); 

if($count > 0) { 
    $insert = "INSERT INTO table2 (id, title, price, session_id) 
      VALUES('$id', '$title', '$price', '$session');"; 
    } 

第一个查询$retrieve是工作,但第二$insert不是。你知道为什么会发生这种情况吗? PS:我知道我需要清理和使用PDO并准备好声明,但我想先测试一下,但它不工作,我不知道为什么。感谢您的帮助

+1

我看不到您执行插入。 –

+0

我该怎么做?我错过了什么? – Eduardo

+0

与您的选择类似的方法。 –

回答

1

你不执行查询:

$insert = "INSERT INTO table2 (id, title, price, session_id) 
     VALUES('$id', '$title', '$price', '$session');"; 
} 

它需要使用mysqli_query()只为你做的数据库连接的选择,并确保您使用session_start();启动会话见到你'正在使用会话。

$insert = "INSERT INTO table2 (id, title, price, session_id) 
     VALUES('$id', '$title', '$price', '$session');"; 
} 


$results_insert = mysqli_query($cnx, $insert); 

基本上。

加...

你现在的代码是开放的SQL injection。使用mysqli with prepared statementsPDO with prepared statements

如果这仍然不起作用,那么MySQL可能会抱怨某些事情,所以您将需要转义您的数据并检查错误。

旁注:

使用mysqli_affected_rows()检查,如果INSERT是真正的成功。

+0

非常感谢,这工作。我将使用PDO和准备好的语句。 – Eduardo

+0

@Eduardo你非常欢迎,*欢呼* –

0

下面是PDO查询的一个例子,如果you'req计划在今后的使用PDO。

$sql = $pdo->prepare("INSERT INTO table2 (id, title, price, session_id) VALUES(?, ?, ?, ?"); 
$sql->bindParam(1, $id); 
$sql->bindParam(2, $title); 
$sql->bindParam(3, $price); 
$sql->bindParam(4, $session_id); 
$sql->execute(); 

这就是我们更安全的方式。