Получение 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....