Почему я не могу вставить в? - PullRequest
1 голос
/ 24 августа 2010

Так что это может быть глупо, но я не могу ничего вставить в MySQL для определенной учетной записи, и я смотрел на это в течение двух часов.Я новичок в PHP, так что я вполне могу делать что-то глупое.Я приложил снимок экрана с БД, которую я пытаюсь вставить.

Вот то, о чем я говорю:

http://dillondoyle.com/files/dbsetup.jpg (мне кажется, imgur не работает)

Вот код, который у меня есть, и PhpMyAdmin сказал мне, чтобы предоставить все привилегии на . TO ...

$fbFirstName = $me['first_name'];
$fbLastName = $me['last_name'];
$fbEmail = $me['email'];
mysql_real_escape_string($fbFirstName,$fbLastName,$fbEmail);

$getuserresult = mysql_query("SELECT * FROM newusers WHERE fbUID=$uid");
$userrowsreturned=mysql_num_rows($getuserresult);
if ($userrowsreturned=0)
  { 
        echo '<br />user already exists, will update something here eventually<br />';
  }
else {
        $sql = mysql_query("INSERT INTO newusers (fbUID,callsAttempted,callsMade,fbEmail,fbFirstName,fbLastName) VALUES ($uid,'1','0',$fbEmail,$fbFirstName,$fbLastName)"); 
        if(!$sql) {
            die("Nope");
        } else {
            echo "1 record added";
        }
        echo '<br />created user<br />';
}

Ответы [ 3 ]

3 голосов
/ 24 августа 2010

Две вещи идут не так, как надо здесь. Побег идет как:

$fbFirstName = mysql_real_escape_string($fbFirstName);
// for all variables

// or, just in one go:
$fbFirstName = mysql_real_escape_string($me['first_name']);

// and for integers, make sure they are actually integers (and prevent mayhem)
$some_id = (int)$me['some_id'];
$uid = (int)$uid;

А при вставке вы должны заключать нецелые значения:

$sql = mysql_query("INSERT INTO `newusers`
     (`fbUID`,`callsAttempted`,`callsMade`,`fbEmail`,`fbFirstName`,`fbLastName`)
     VALUES
     ('$uid',1,0,'$fbEmail','$fbFirstName',$fbLastName')"); 

(но вы также можете заключать в кавычки целые числа - вы никогда не узнаете, является ли какой-либо внешний идентификатор буквенным или цифровым.)

2 голосов
/ 24 августа 2010

У вас есть ошибка

if ($userrowsreturned=0)

должно быть (используйте двойные равные для проверки эквивалентности, одинаковые равные для назначения)

if ($userrowsreturned==0)

Я также думаю, что вы на самом деле имеете в виду следующее, так как выпроверяем, существует ли пользователь

if ($userrowsreturned==1) 
0 голосов
/ 24 августа 2010

в первую очередь вы должны изменить

$getuserresult = mysql_query("SELECT * FROM newusers WHERE fbUID=$uid");

до

$getuserresult = mysql_query("SELECT * FROM newusers WHERE fbUID='$uid'");

после этого измените вашу вставку на:

$sql = mysql_query("INSERT INTO newusers (fbUID,callsAttempted,callsMade,fbEmail,fbFirstName,fbLastName) VALUES
     ('$uid','1','0','$fbEmail','$fbFirstName',$fbLastName')"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...