我试图从属于$ _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'] . '"';
答案 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 ...界面。