Мое соединение MySQL возвращается при ошибке? - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь подключиться к API и получить пользователя из системы пожертвований, а затем открыть сокет для игры, чтобы автоматически дать пользователю сумму, которую он пожертвовал. Мне нужно избавиться от этой ошибки: "У вас есть ошибка в вашем синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с 'r $ в строке 1"

Кажется, я не вижу, в чем проблема? Вот сценарий:

<?php
$tablename="CENSORED";
$DBUSER="CENSORED";
$DBPASSWORD="CENSORED";
$DBHOST="CENSORED";
?>
<?php

$urlMask = 'CENSORED';    

$getUser = function($id) use ($urlMask) {
    list($user) = json_decode(file_get_contents(sprintf($urlMask, $id)));
    return (object) $user;
};

$user = $getUser(4087396);

$Username = $user->user->username;
$Rank = $user->item_name;
$IGN = $user->custom_field;
echo '<center> Your username is '.$IGN.' correct? </center> ';
?>

<?php
if(isset($_POST['Clickbutton'])){

    $con = mysql_connect($DBHOST,$DBUSER,$DBPASSWORD);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());

  }
mysql_select_db($tablename, $con);
$sql="SELECT IGN FROM fisktable WHERE IGN='$IGN' and Rank='$Rank'" ;
$r = mysql_query($sql);
if(!$r) {
   $err=mysql_error();
   print $err;
}

    $result = mysql_query('$r') or die(mysql_error());
    if(mysql_num_rows($result) == 1) {
echo 'That username has already been given their rank!';
    } else {
         $HOST = "77.45----"; //the ip of the bukkit server
         $password = "chdfxfdxh";
        //Can't touch this:
        $sock = socket_create(AF_INET, SOCK_STREAM, 0)
        or die("error: could not create socket\n");
        $succ = socket_connect($sock, $HOST, 4445) 
        or die("error: could not connect to host\n");
        //Authentification
        socket_write($sock, $command = md5($password)."<Password>", strlen($command) + 1)
        or die("error: failed to write to socket\n");
        //Begin custom code here.
        socket_write($sock, $command = "/Command/ExecuteConsoleCommand:pex user ($IGN) group set ($Rank);", strlen($command) + 1) //Writing text/command we want to send to the server
        or die("error: failed to write to socket\n");
        socket_write($sock, $command = "Thanks, ($IGN) for donating to the ($Rank) rank! ;", strlen($command) + 1)
        or die("error: failed to write to socket\n");
    mysql_select_db($tablename, $con);
$sql="INSERT INTO $tablename(IGN,Rank) VALUES ('$IGN','$Rank')" ;
        exit();
}}
?>
<center>
<form method="POST">
<input name="Clickbutton" type="submit" value="Yes! I would like to receive my rank!"/> 
</form>
</center>

Я пытаюсь проверить, были ли пользователю уже присвоены его ранг и предметы, добавив их в базу данных, когда им даны их предметы. И тогда, если они попытаются сделать это дважды, они получат ошибку, сообщающую, что им уже присвоено их звание!

Если вы видите какие-либо другие проблемы или потенциальные проблемы, не стесняйтесь указывать на них. Спасибо!

1 Ответ

2 голосов
/ 28 марта 2012

Базовая синтаксическая ошибка PHP:

$result = mysql_query('$r') or die(mysql_error());
                      ^--^--- remove the quotes

Строки в одинарных кавычках не интерполируют значения.Вы передаете литерал $ и r в mysql как запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...