sql 查询未正确执行
sql query not executed correctly
自从我将操作系统从 Windows 7 更改为 Linux Mint 后,我的 PHP/SQL 代码似乎无法正常工作。
$AddUserToDatabase = $DatabaseConnection->prepare(
'INSERT INTO gebruikers (' .
' gebruiker_naam, profiel_foto, wachtwoord,' .
' salt, email, timestamp, admin' .
') VALUES (' .
' :username, :profiel_foto, :wachtwoord,' .
' :salt, :email, :timestamp, :admin' .
')'
);
$AddUserToDatabase->execute(
array(
'username' => $Username,
'profiel_foto' => 'UnknownUser.png',
'wachtwoord' => $EncryptedPassword,
'salt' => $Salt,
'email' => $Email,
'timestamp' => $CurrentTimestamp,
'admin' => '0'
)
);
自从我更改了操作系统后,我没有对代码进行任何更改,并且我没有从语句中收到任何错误或警告。
页面加载后,我检查了数据库中的新记录,但它不存在:(
我觉得很奇怪,从 windows 更改为 linux 后,代码停止工作了。
有人知道这是怎么回事吗?
编辑:
我只是尝试执行其他一些语句,但其中 none 似乎有效。我想我在某处有一些错误的配置..
EDIT2
在 index.php 中我包含了下一个文件
include 'Class/Session.php';
include 'Class/Login_Register.php'
$Session->ConnectWithDatabase();
这是错误,但我不明白为什么它说没有选择数据库...
Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected'
in /var/www/html/ScriptDeals/Classes/login_register.php:227
Stack trace:
#0 /var/www/html/ScriptDeals/Classes/login_register.php(227):
PDOStatement->execute(Array)
#1 /var/www/html/ScriptDeals/Classes/login_register.php(81):
LoginRegister->RegisterUser('test@live.nl', 'test', '12345678')
#2 /var/www/html/ScriptDeals/index.php(20):
LoginRegister->FormErrorHandling()
#3 {main}
thrown in /var/www/html/ScriptDeals/Classes/login_register.php on line 227
这就是设置我的数据库连接的原因
function ConnectWithDatabase()
{
global $DatabaseConnection;
$DatabaseUsername = 'root';
$DatabasePassword = 'database';
$DatabasePath = 'mysql:host=localhost;port:3306;dbname=scriptdeals';
$DatabaseConnection = new PDO(
$DatabasePath, $DatabaseUsername, $DatabasePassword
);
}
抱歉这个问题!
我发现我必须删除 port:3306
执行此操作后,我收到有关数据库中缺少字段的错误消息。
我添加了新字段,现在可以使用了^^
感谢您的帮助,但对于错误的问题感到抱歉!
自从我将操作系统从 Windows 7 更改为 Linux Mint 后,我的 PHP/SQL 代码似乎无法正常工作。
$AddUserToDatabase = $DatabaseConnection->prepare(
'INSERT INTO gebruikers (' .
' gebruiker_naam, profiel_foto, wachtwoord,' .
' salt, email, timestamp, admin' .
') VALUES (' .
' :username, :profiel_foto, :wachtwoord,' .
' :salt, :email, :timestamp, :admin' .
')'
);
$AddUserToDatabase->execute(
array(
'username' => $Username,
'profiel_foto' => 'UnknownUser.png',
'wachtwoord' => $EncryptedPassword,
'salt' => $Salt,
'email' => $Email,
'timestamp' => $CurrentTimestamp,
'admin' => '0'
)
);
自从我更改了操作系统后,我没有对代码进行任何更改,并且我没有从语句中收到任何错误或警告。
页面加载后,我检查了数据库中的新记录,但它不存在:(
我觉得很奇怪,从 windows 更改为 linux 后,代码停止工作了。
有人知道这是怎么回事吗?
编辑: 我只是尝试执行其他一些语句,但其中 none 似乎有效。我想我在某处有一些错误的配置..
EDIT2
在 index.php 中我包含了下一个文件
include 'Class/Session.php';
include 'Class/Login_Register.php'
$Session->ConnectWithDatabase();
这是错误,但我不明白为什么它说没有选择数据库...
Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected'
in /var/www/html/ScriptDeals/Classes/login_register.php:227
Stack trace:
#0 /var/www/html/ScriptDeals/Classes/login_register.php(227):
PDOStatement->execute(Array)
#1 /var/www/html/ScriptDeals/Classes/login_register.php(81):
LoginRegister->RegisterUser('test@live.nl', 'test', '12345678')
#2 /var/www/html/ScriptDeals/index.php(20):
LoginRegister->FormErrorHandling()
#3 {main}
thrown in /var/www/html/ScriptDeals/Classes/login_register.php on line 227
这就是设置我的数据库连接的原因
function ConnectWithDatabase()
{
global $DatabaseConnection;
$DatabaseUsername = 'root';
$DatabasePassword = 'database';
$DatabasePath = 'mysql:host=localhost;port:3306;dbname=scriptdeals';
$DatabaseConnection = new PDO(
$DatabasePath, $DatabaseUsername, $DatabasePassword
);
}
抱歉这个问题!
我发现我必须删除 port:3306 执行此操作后,我收到有关数据库中缺少字段的错误消息。
我添加了新字段,现在可以使用了^^
感谢您的帮助,但对于错误的问题感到抱歉!