2015-07-20 104 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(); 

這就是我們更安全的方式。