Получение userId из 1 таблицы и запись в другую

Я пытаюсь получить userId из одной таблицы, которая принадлежит $_SESSION['userName'], и поместить ее в другую таблицу с сообщением. это то, что у меня есть sofar, но он не работает, и он отправляет эту ошибку: Невозможно выполнить запрос.

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 ответа

Вам не нужны два SQL-запроса, вы можете делать все в одном, но, конечно, вам не нужно:

<?php

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

Ты должен сбежать $session, даже если это исходит от вашего БД. Некоторые пользователи могут использовать свое имя для инъекции SQL.

Похоже, ваше имя пользователя в varchar в БД, поэтому при использовании в запросе вы должны иметь переменную '', поэтому измените следующее

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

в

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

И, во-вторых, измените параметры mysql_query() в правильном порядке, как указано другими.

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

В mysql_query($SQLstring, $DBConnect); ваш первый параметр должен быть $SQLstring1 (ты используешь "$SQLstringЯ не уверен, что это решит вашу проблему. Дайте мне знать, если это не так.

также делайте эти вещи. 1- проверьте, имеет ли $_SESSION['userName'] какое-либо значение. 2- обновите свой первый запрос SELECT на

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

mysql_query() возвращает логическое значение, которое оказывается ложным в случае сбоя запроса.

Вы могли бы сделать

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

и вы, вероятно, получите лучшее представление о том, какие у вас проблемы.

Я позволю кому-то еще поносить вас об использовании небезопасного и устаревшего интерфейса mysql....

Другие вопросы по тегам