2010-12-09 157 views
1

我想知道如果我正在做一个正确的表格写入,它似乎失败。MySQL表格插入

while($n != 1) 
    { 
    $randstring = "live_".RandomString(); 
    echo "<br>".$username."<br>"; 
    echo $randstring."<br>"; 
    $idcheck = mysql_query("SELECT * FROM streamer_ids WHERE streamer_id='".$randstring."'"); //check for matching random strings 
    if (!(mysql_num_rows($idcheck)>0)) 
    { 
    $n=1; //It has found a random string that does not match. 
    } 
    } 
//if it has reached this far, it has a unique id. Now that id is being written to the database. 
    $temp = mysql_query("INSERT INTO streamer_ids (username,streamer_id,premium) VALUES(".$username.",".$randstring.","0")"); 
    $temp->closeCursor(); 

请注意,最后一部分被严重屠杀,这是我需要帮助。

+0

1.你可以发布你正在得到的错误2.强制性SQL注入警告 - 使用参数3.你对匹配随机字符串的唯一性检查似乎是多余的 - 你试图用它来实现什么? – InSane 2010-12-09 04:09:09

+0

它需要是完全独特的,如果匹配的话它会继续重新生成随机字符串。 – 2010-12-09 04:19:48

回答

1

您似乎在插入语句中缺少字符串分隔符。

I.e.

$temp = mysql_query("INSERT INTO streamer_ids (username,streamer_id,premium) VALUES('".$username."','".$randstring."','0')");

另外,我不知道在哪里的$用户名值是从哪里来的,但你应该大概是为了防止SQL注入消毒它。即在其上运行addslashes

  • 基督教
0

你可以把你的插入逻辑放到如果ROW_COUNT> 0的条款,还你得到错误,因为你使用字符串连接,而不是参数生成查询。使用参数,它会工作=)你目前的代码是非常危险的。

此外,您的select *语句可以替换为select count(*),这将使您的逻辑更加清晰,因为您只需要从db请求所需的数据,在这种情况下,是否存在行。