从1个表中获取userId并将其写入另一个表中

时间:2014-01-11 13:25:03

标签: php mysql sql session userid

我试图从属于$ _SESSION ['userName']的一个表中获取userId,并将其放在带有消息的另一个表中。这就是我所知道的但是它不起作用并且它发送了这个错误:无法执行查询。

Error code 1054: Unknown column 'Jolt' in 'where clause'
and an php error:
 Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\PhpProject15\addMessage.php on line 23

Call Stack
#   Time    Memory  Function    Location
1   0.0009  143720  {main}( )   ..\addMessage.php:0
2   1.0174  151896  mysql_fetch_assoc ( )   ..\addMessage.php:23

第23行是$ Row = ......

<?php
session_start();

if (isset($_POST['submit']))
    {
    if (empty($_POST['message']))
        {
        echo "Vul een bericht in!";
        }
    $DBConnect = @mysql_connect("localhost", "root", "");
    if ($DBConnect === FALSE)
        {
        echo "<p>Unable to connect to the database server.</p>"
        . "<p>Error code " . mysql_errno() . ": " . mysql_error() . "</p>";
        } else
        {
        $DBName = "stendentwitter";
        mysql_select_db($DBName, $DBConnect);
        $TableName = "stenden_users";
        $session = $_SESSION['userName'];
        $SQLstring = "SELECT `userId` FROM `$TableName` WHERE `userName`=" . $session;
        $QueryResult = mysql_query($SQLstring, $DBConnect);
        $Row = mysql_fetch_assoc($QueryResult);
        $userId = "{$Row['userId']}";
        $TableName1 = "stenden_messages";
        $message = stripslashes($_POST['message']);
        $SQLstring1 = "INSERT INTO $TableName1 VALUES(NULL, '$userId', '$message')";
        $QueryResult1 = mysql_query($SQLstring, $DBConnect);
        if ($QueryResult1 === FALSE)
            echo "<p>Unable to execute the query.</p>" . "<p>Error code " . mysql_errno($DBConnect) . ": " . mysql_error($DBConnect) . "</p>";
        else
            {
            sleep(5);
            header("Location: index.php");
            }
        }
    mysql_close($DBConnect);


    }
?>
<html>
    <head>
        <title>User Login</title>
        <link rel="stylesheet" type="text/css" href="styles.css" />
    </head>
    <body>

        <?php
        if (isset($_SESSION["userName"]))
            {
            echo "<form action='addMessage.php' method='POST'>"
            . "<p>Typ hier Uw bericht:<br/><textarea rows='4' cols='50' name='message'></textarea></p>"
            . "<p><input type='submit'  name='submit' value='submit'/></p></form>";
            } else
            {
            echo "U bent niet ingelogd klik <a href='login.php'>hier</a> om in te loggen <a href='register.php'>hier</a> om u te registreren";
            }
        ?>
    </body>
</html>

我终于修复了这个查询是有效的 我感谢所有帮助过的人。

 $SQLstring = 'SELECT `userId` FROM ' . $TableName . ' WHERE `userName` = "' . $_SESSION['userName'] . '"';

4 个答案:

答案 0 :(得分:1)

您的userName在数据库中看起来是varchar,因此在查询中使用时应该有一个''用于varibale,因此请更改以下内容

$SQLstring = "SELECT `userId` FROM `$TableName` WHERE `userName`=" . $session;

$SQLstring = "SELECT `userId` FROM `$TableName` WHERE `userName`= '".$session."'";

并且按照其他人提到的顺序更改mysql_query()参数。

答案 1 :(得分:1)

你不需要两个sql查询,可以一起完成所有操作,但当然你不必须

<?php

$sql = "INSERT INTO $TableName1 VALUES(NULL, (SELECT `userId` FROM `$TableName` WHERE `userName`='$session'), '$message')";

你必须逃脱$session,即使它来自你的数据库。有些用户可以使用他的名字进行SQL注入。

答案 2 :(得分:0)

$SQLstring1 = "INSERT INTO $TableName1 VALUES(NULL, '$userId', '$message')";
$QueryResult1 = mysql_query($SQLstring, $DBConnect);
if ($QueryResult1 === FALSE)

mysql_query($SQLstring, $DBConnect);中,yoru frist参数应为$SQLstring1(您使用的是“$SQLstring”)。 我不确定它是否能解决你的问题。如果没有,请告诉我。

也做这些事情.. 1-检查$ _SESSION ['userName']是否有任何值。 2-将您的第一个SELECT查询更新为

   "SELECT `userId` FROM `$TableName` WHERE `userName`='" . $session . "'";

答案 3 :(得分:0)

mysql_query()返回一个布尔值,当查询失败时,该值恰好为false。

你可以做到

$QueryResult = mysql_query($SQLstring, $DBConnect) || die (mysql_error($DBConnect));

你可能会更好地了解你遇到了什么麻烦。

我会让别人唠叨你使用不安全和弃用的mysql ...界面。