2013-09-24 50 views
0

我想查看keyWord是否已經存在於表searchwords中。如果是這樣,那麼國家就會增加一個。如果它不存在於表中,那麼我使用INSERT。問題是,傳遞到站點的關鍵字未存儲在數據庫中。另一個BIG問題是國家不增加。是因爲if語句嗎?或者它是while循環?更新mysql表中的數據

<?php 
date_default_timezone_set('Asia/Manila'); 
$today = date('m-d-Y'); 
echo $today; 
$urltopost = "http://opac.usls.edu.ph/TLCScripts/interpac.dll?Search"; 
$datatopost = "FormId=0&Config=pac&LimitsId=0&StartIndex=0&SearchField=7&SearchType=1&ItemsPerPage=20&SearchData=$_POST[keyWord]"; 
$ch = curl_init ($urltopost); 
curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $datatopost); 
curl_setopt ($ch, CURLOPT_HEADER, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
$returndata = curl_exec ($ch); 
echo $returndata; 
$con=mysqli_connect("...","...","...","...")or die ('Error: ' . mysql_error()); 
$sql= "SELECT * FROM searchedWords"; 
$result= mysqli_query($con,$sql); 


while($row=mysqli_fetch_array($result, MYSQLI_ASSOC)) 
{    
     if($row['keyWord']==$_POST[keyWord]) 
     { 
     $upD="UPDATE searchedWords SET countr = countr + 1 WHERE keyWord = '".$row['keyWord']."'"; 
      while (!mysqli_query($con,$upD)) 
      { 
      die('Error: ' . mysqli_error($con)); 
      } 
     } 
     else 
     { 
     $insertIn="INSERT INTO `searchedWords`(`keyWord`, `countr`) values ('$_POST[keyWord]',1)"; 
     while (!mysqli_query($con,$insertIn)) 
      { 
      die('Error: ' . mysqli_error($con)); 
      } 
     } 
} 
?> 

謝謝那些能幫助我的人。

+0

請你寫之前** *任何*更多SQL接口代碼,您必須閱讀[正確的SQL轉義](http://bobby-tables.com/php)以避免嚴​​重的[SQL注入漏洞](http://bobby-tables.com/)。當使用'mysqli'時,您應該使用參數化查詢和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **從不**使用字符串插值來實現這一點。 – tadman

+0

if($ row ['keyWord'] == $ _ POST [keyWord])對這兩個變量都執行var_dump。 – Mihai

回答

0

看看你爲什麼讓事情複雜...嘗試簡單的方法

$KeyWord = $_POST['keyWord']; //Do not forget to sanitize this for security 
$sql= "SELECT * FROM searchedWords WHERE keyWord='$KeyWord'"; 
$result= mysqli_query($con,$sql); 
$count= mysqli_num_rows($result); 

if($count) { 
$upD="UPDATE searchedWords SET countr = countr + 1 WHERE keyWord = '$keyWord'"; 
mysqli_query($con,$upD); 
} else { 
$insertIn="INSERT INTO `searchedWords`(`keyWord`, `countr`) values ('$keyWord',1)"; 
mysqli_query($con,$insertIn); } 
+0

感謝您的幫助。這是我在編碼方面常見的錯誤之一。除了忘記'和'之外,我會在循環和其他語句中迷失方向。幾分鐘後,我發現自己正在用籌碼或用Photoshop來玩未完成的工作。 –

0

在循環中運行sql查詢是一個非常糟糕的做法。嘗試使用此類查詢更新所有現有關鍵字:

$keyword = htmlspecialchars($_POST['keyWord']); 

    UPDATE searchedWords SET countr = countr + 1 WHERE keyWord = '".$keyword."'"; 

沒有更多循環!

而且工作更安全,更高效的與數據庫採取http://php.net/manual/en/pdo.prepared-statements.php

+0

我剛開始使用php,我一定會閱讀你包含的這個鏈接。感謝您的提示和建議。 –

+0

此鏈接可能對您有用http://www.catswhocode.com/blog/10-awesome-php-functions-and-snippets –