我有一个 1and1 的虚拟服务器。不幸的是,支持还不够。
该代码是登录文件的一部分,已经工作了近 1.5 年。从昨天开始执行语句返回 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())
..........
最佳答案
可能查询变得无效。(我知道它正在工作) 尝试查看错误报告
printf("%s\n", $mysqli->info);
printf("Errormessage: %s\n", $mysqli->error);
我认为,mysqli bind_param 不能正确处理非英文字母,所以如果你有一些字母或符号....... 尝试将此行放在准备语句之前
$connection->set_charset('utf8');
关于php - MySQL准备和执行的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24587735/