MySQL检查字符串是否存在并更新或创建


MySQL checking if string exist and updating or creating

我试图通过php为MySQL做一个简单的if exist检查,然后我将创建一个字符串,如果不存在;或者如果存在字符串,它将更新并添加值counter = counter + 1

但现在我不知道为什么什么也没发生:s

我做错了什么-我有搜索的问题,但我没有找到任何东西…

谢谢提前

下面是代码

$rankset = '';
$steamid64 = "76561198070477917";
$localmap = "de_dolls";
mysql_connect("localhost", "######", "###############") or die(mysql_error());  
mysql_select_db("server") or die(mysql_error());
$check1 = mysql_query("SELECT * FROM `darkrp_missingmap` WHERE map = '$localmap'") or die(mysql_error());
while($info1 = mysql_fetch_array( $check1 )) 
{ 
  if(mysql_num_rows($info1) == 0) {
    print "existiert nicht wird erstellt...";
    mysql_query("SELECT server INSERT INTO darkrp_missingmap (map, count) VALUES ('$localmap', '1')");
  } 
  else {
    print "existiert wird aufgestuft...";
    mysql_query("SELECT server UPDATE darkrp_missingmap SET count = count + 1 WHERE map = '$localmap'");
  }
} 

mysql_num_rows()将资源对象作为参数,该参数是您的$check1,而您将数组$info1传递给它。

你应该做的是:

$check1 = mysql_query("SELECT * FROM `darkrp_missingmap` WHERE map = '$localmap'") or die(mysql_error());
if (mysql_num_rows($check1) === 0) {
    #no records found
    print "existiert nicht wird erstellt...";
    #rest of your code
} else if (mysql_num_rows($check1) === FALSE) {
    #query failed
} else {
    #records found
    print "existiert wird aufgestuft...";
    #rest of your code
}

你应该小心使用==0,因为mysql_num_rows()在失败时返回FALSE,这也可以与0进行比较。

注意:

请不要在新代码中使用mysql_*函数。它们不再被维护,并被正式弃用。见红框?学习预处理语句,并使用PDO或MySQLi——本文将帮助您决定使用哪一种。如果你选择PDO,这里有一个很好的教程。

你可以试试这个,你可以ref [this]

$check1 = mysql_query("SELECT * FROM `darkrp_missingmap` WHERE map = '$localmap'") or die(mysql_error());
$nums = mysql_num_rows($check1);
if($nums == 0) {
 // do something
}

或者你可以使用这个sql.

SELECT COUNT(*) AS count FROM `darkrp_missingmap` WHERE map = '$localmap'

并得到这个查询的结果count

$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$nums = $row[0]['count'];

我不认为你一次选择和插入,你也不需要试试这个

if(mysql_num_rows($info1) >0) {
print "existiert nicht wird erstellt...";
mysql_query("INSERT INTO darkrp_missingmap (map, count) VALUES ('$localmap', '1')");
} else {
print "existiert wird aufgestuft...";
mysql_query("UPDATE darkrp_missingmap SET count = count + 1 WHERE map = '$localmap'");
}

试着告诉

好的,我已经找到了我的麻烦,我已经选择了db "服务器",然后我试图做到这一点INSERT INTO darkrp_missingmap (map, count) VALUES ('zu_kotze', '100')

下面是工作示例:$steamid64 = "76561198070477917";$localmap = "de_dollsw";

mysql_connect("localhost", "####", "##########") or die(mysql_error());  
mysql_select_db("server") or die(mysql_error());
//maplog
$check1 = mysql_query("SELECT * FROM `darkrp_missingmap` WHERE map = '$localmap'") or die(mysql_error());
$nums = mysql_num_rows($check1);
if($nums == 0) {
print "existiert nicht wird erstellt...";
mysql_query("INSERT INTO darkrp_missingmap (map, count) VALUES ('$localmap', '1')");
} else {
print "existiert wird aufgestuft...";
mysql_query("UPDATE darkrp_missingmap SET count = count + 1 WHERE map = '$localmap'");
}