我有一个用PHP和mySQL开发的项目,我有一个在PHP代码中不起作用的查询,但是当我在PHPmyAdmin上尝试相同的查询时,它可以正常工作(它找到结果)。
代码是下一个:
$server="localhost";
$user="andes";
$pass="password";
$DB="andes";
$connect=mysqli_connect($server, $user, $pass, $DB);
代码应该打印“rut”变量。
这是查询上方的连接
CREATE TABLE tbl110_dotacion`
( FecTurno varchar(10) DEFAULT NULL,
Rut varchar(11) DEFAULT NULL,
CodTurno varchar(5) DEFAULT NULL,
Ausencia varchar(9) DEFAULT NULL,
Atraso varchar(9) DEFAULT NULL,
Accidente varchar(9) DEFAULT NULL,
Enfermedad varchar(9) DEFAULT NULL,
HHEE varchar(9) DEFAULT NULL,
Policlinico varchar(5) DEFAULT NULL,
Ausentismo_RRHH varchar(5) DEFAULT NULL,
CodCargo varchar(5) DEFAULT NULL,
No_Colacion varchar(9) DEFAULT NULL,
seleccion varchar(5) DEFAULT NULL )
ENGINE=InnoDB DEFAULT CHARSET=utf8;
表格结构:
// Enabling multidex support.
multiDexEnabled true
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
答案 0 :(得分:0)
尝试这样的事情:
$sqlD="SELECT Rut,FecTurno FROM tbl110_dotacion
WHERE Rut='$rut' AND FecTurno='$fecTurno'";
$requestD=mysqli_query($connect,$sqlD);
echo $sqlD;
while($rowx=mysqli_fetch_array($requestD)){
$RUTS=$rowx['Rut'];
echo $RUTS.'<br>';
}
可能会有效。
答案 1 :(得分:0)
一个可能的原因可能是列名(Camel-Case)。试试这个:
"SELECT rut FROM tbl110_dotacion
WHERE rut='$rut' AND fecturno='$fecTurno'"
答案 2 :(得分:0)
打印$requestD
值并查看您获得的返回结果。
失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询mysqli_query()
将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。
答案 3 :(得分:0)
好的,定义错误发生位置的过程:
1个连接
检查您的PHP是否成功连接到MySQL服务器。 (这已经完成)
2变量
检查您的PHP变量:
$rut
和$fecTurno
,在SQL查询之前打印这些值,以向自己证明它们是页面设置的正确值。
3 CamelCase
检查Peeje引用的Case Sensitivity,MySQL区分大小写。 (这已经完成)
4 Variabe Escaping
它适用于一个媒体,PHPMyAdmin
,但不在您的PHP页面中,所以下一步是检查有什么不同,你有没有逃过$variables
?删除反引号,单引号和其他不良字符?
使用Mysqli_real_escape_string
执行此操作。
5个字符集
检查您的字符编码。您需要正确定义字符编码。这只是一个可能的原因,具体取决于各种PHP变量的确切内容,但根据措辞来判断您的母语可能使用扩展的UTF-8字符集而不是MySQL UTF-8字符组。请阅读:UTF-8 all the way through
MySQL UTF-8 非常糟糕,您希望改为使用充当UTF-8的MySQL utf8mb4
编码。阅读链接了解详细原因。
此外,在您的连接文件中设置连接字符集,这与 storage 字符集不同:
mysqli_set_charset($connect, "utf8mb4");
http://php.net/manual/en/mysqli.set-charset.php
请注意,MySQL与其他人的语言不同。 当MySQL说“utf8”时,它实际上意味着“一些奇怪的延迟变种 UTF-8被限制为三个字节,对于上帝知道什么是荒谬的 原因“。如果你真的想要UTF-8,你应该告诉MySQL你想要的 这个奇怪的事情MySQL喜欢称之为utf8mb4。不要费心省钱 “WTF!”s。
来自上述链接的评论。
希望通过以上方法解决你的问题。