如何链接到数据库

时间:2011-12-16 22:39:34

标签: php javascript mysql

我创建了一个随机字符串生成器。会发生的是用户点击一个按钮,并使用字母A和B,它将构造一个3字母的字符串,例如:

AAA
AAB
ABA
ABB
BAA
BAB
BBA
BBB

现在我想要的是我的随机字符串生成链接到“SessionId”列,该列位于我的数据库的“Session”表中,其中将存储这些字符串。我想要的是生成字符串的按钮不在数据库中。例如,如下所示(会话表中的SessionId):

Session Id

AAA
AAB

由于这两个会话(字符串AAA和AAB)在数据库中,所以当单击按钮并生成字符串时,生成器根本不应显示这两个字符串,因为它们已经存在于数据库中。后来我希望生成的字符串存储在数据库中,但目前我只希望我的生成器生成已经在数据库中的字符串。

有没有人知道如何将其链接到“会话”表中的“会话ID”字段并生成不在数据库中的字符串?

我的代码在jsfiddle中,因此您可以看到按钮的工作原理和使用的代码,点击here查看

下面是我正在使用的PHP代码。这个PHP代码将让我连接到数据库,所有用户在文本框中输入courseId,如果courseId在文本框中,那么用户可以输入else,它将显示警报。以下是代码:

      <?php

              $username="xxxxxxxxxxx";
              $password="xxxxxx";
              $database="mobile_app";

              mysql_connect('localhost',$username,$password);
              @mysql_select_db($database) or die("Unable to select database");

              foreach (array('courseid') as $varname) {
                $courseid = (isset($_POST[$varname])) ? $_POST[$varname] : '';
              }

            ?>


<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>Course ID: <input type="text" name="courseid" value="<?php echo $courseid; ?>" /><input type="submit" value="Submit" name="submit" /></p>      <!-- Enter User Id here-->
            </form>

            <?php
    if (isset($_POST['submit'])) {
        $query = "
                     SELECT cm.CourseId, cm.ModuleId, 
                     c.CourseName,
                     m.ModuleName
                     FROM Course c
                     INNER JOIN Course_Module cm ON c.CourseId = cm.CourseId
                     JOIN Module m ON cm.ModuleId = m.ModuleId
                     WHERE
                     (c.CourseId = '".mysql_real_escape_string($courseid)."')
                     ORDER BY c.CourseName, m.ModuleId
                     ";



    $num = mysql_num_rows($result = mysql_query($query));
        mysql_close()

;
?>

更新下面的PHP代码:

<?php

      $username=xxx";
      $password="xxx";
      $database="mobile_app";


      $is_there = true;

      $con = mysql_connect('localhost',$username,$password);
      @mysql_select_db($database, $con) or die("Unable to select database");

while( $is_there ){
    $id = id_generator(); // your function to generate id;
    $result = mysql_query( "SELECT SessionId FROM Session WHERE SessionId = '$id'" );
    if( mysql_num_rows( $result ) == 0 ) $is_there = false;
}




      foreach (array('courseid', 'sessionid') as $varname) {
        $$varname = (isset($_POST[$varname])) ? $_POST[$varname] : '';
      }

    ?>

    <h1>CREATING A SESSION</h1>

        <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
         <p>Course ID: <input type="text" name="courseid" value="<?php echo $courseid; ?>" /><input type="submit" value="Submit" name="submit" /></p>      <!-- Enter User Id here-->
        </form>

        <?php
if (isset($_POST['submit'])) {
    $query = "
                 SELECT cm.CourseId, cm.ModuleId, 
                 c.CourseName,
                 m.ModuleName
                 FROM Course c
                 INNER JOIN Course_Module cm ON c.CourseId = cm.CourseId
                 JOIN Module m ON cm.ModuleId = m.ModuleId
                 WHERE
                 (c.CourseId = '".mysql_real_escape_string($courseid)."')
                 ORDER BY c.CourseName, m.ModuleId
                 ";

    $num = mysql_num_rows($result = mysql_query($query));
    mysql_close();

2 个答案:

答案 0 :(得分:0)

如果你要做的是生成一个数据库中尚未存在的随机会话ID,那么你可能需要创建一个服务器方法来生成一个新的会话ID,该ID会创建一个不在数据库已经使用ajax调用从服务器检索新的会话ID。

如果您尝试将所有现有ID添加到客户端,然后在客户端上生成新ID,您将打开自己的竞争条件,允许客户端具有相同的ID(因为他们都在制作一个同一时间)。应在具有适当锁定的服务器上执行此类操作以避免竞争条件。如何在服务器上执行此操作取决于您正在使用的数据库/服务器框架。

答案 1 :(得分:0)

服务器上的代码应该是:

$is_there = true;

$con = mysql_connect( address , user, pass );
mysql_select_db( DATABASE , $con );

while( $is_there ){
    $id = id_generator(); // your function to generate id;
    $result = mysql_query( "SELECT * FROM your_table WHERE id = '$id'" );
    if( mysql_num_rows( $result ) == 0 ) $is_there = false;
}

当在DB中找不到生成的id时,这将停止。

<?php

              ...
              @mysql_select_db($database) or die("Unable to select database");
              $courseid = "";
              while( $is_there ){
              $courseid = id_generator(); // your function to generate id;
              $query = "
                     SELECT cm.CourseId, cm.ModuleId, 
                     c.CourseName,
                     m.ModuleName
                     FROM Course c
                     INNER JOIN Course_Module cm ON c.CourseId = cm.CourseId
                     JOIN Module m ON cm.ModuleId = m.ModuleId
                     WHERE
                     (c.CourseId = '".mysql_real_escape_string($courseid)."')
                     ORDER BY c.CourseName, m.ModuleId
                     ";

              if( mysql_num_rows( $result = mysql_query($query) ) == 0 ) $is_there = false;
              }
              mysql_close();
              echo "You generated code id: " . $courseid;

              ?>...