php - MySQL准备和执行的问题

标签 php mysql select prepared-statement

我有一个 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/

相关文章:

php - 如何在特定管理页面上显示magento的所有创建的类别?

www 目录中的 PHP 文件无法访问用户目录中的图像

MySQL OUTER 加入 AS

mysql - 从多个表中选择 using in statement 并显示所有内容,无论结果如何

javascript - 将列表显示为 <选项值 ="">

mysql - 在巨大的 table 上加入 3 张 table 的速度非常慢

javascript - 在 ajax 成功中无法检测到来自 mysql 的 json_encode 结果

php - 在这种情况下使用 jquery 时如何突出显示每个 div?

mysql 在插入时创建触发器

javascript - jquery : not able to select table elements which are created dynamically by jquery