2013-09-24 35 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 –