MySQL准备和执行的问题

时间:2014-07-05 15:08:37

标签: php mysql select prepared-statement

我有1个1的V服务器。不幸的是,这种支持是不够的 此代码是登录文件的一部分,已经工作了近一年半。从昨天开始,execute语句返回false。 我尝试过不同的东西,但我找不到为什么执行return false?

$mail     = "test";
$password = "test";
$prep = "SELECT id FROM member WHERE address=? AND password=?";
if ( $stmt = $mysqli->prepare($prep))
{
$stmt->bind_param( "ss", $mail, $password );
$stmt->execute();
$stmt->bind_result($id);
if ($stmt->fetch())
..........

当我减少SELECT语句并删除AND时,$ stmt-> execute()返回TRUE。

$mail     = "test";
$password = "test";
$prep = "SELECT id FROM member WHERE address=?";
if ( $stmt = $mysqli->prepare($prep))
{
$stmt->bind_param( "s", $mail );
$stmt->execute();
$stmt->bind_result($id);
if ($stmt->fetch())
..........

当我添加AND时,OR再次失败?

$mail     = "test";
$password = "test";
$prep = "SELECT id FROM member WHERE address=? OR password=?";
if ( $stmt = $mysqli->prepare($prep))
{
$stmt->bind_param( "ss", $mail, $password );
$stmt->execute();
$stmt->bind_result($id);
if ($stmt->fetch())
..........

2 个答案:

答案 0 :(得分:2)

可能查询无效。(我知道它有效) 尝试看看错误报告

printf("%s\n", $mysqli->info);
printf("Errormessage: %s\n", $mysqli->error);

我认为,如果你有一些字母或符号,那么mysqli bind_param并不是英文字母。 尝试在准备声明之前加上这一行

$connection->set_charset('utf8');

答案 1 :(得分:0)

检查member表是否存在,以及是否有idpasswordaddress字段。如果是这样,那么尝试直接运行您的查询。看看它是否失败以及错误是什么。另外,检查您与数据库的连接是否有效。