无法弄清楚此代码存在的问题
不断收到错误
注意:第10行的C:\ wamp \ www \ myProject \ editProfile \ edit_save.php中的未定义索引:userID
和
无法运行查询:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在#1;(UserID,matrix_num,student,username,town,email,txtFavorite,noDate,txtMobil'第1行)附近使用正确的语法
if($_GET) {
$noEdit = $_POST[''];
//"SELECT *FROM "
$sql = "SELECT * FROM tblmyprofile where student='$name', username='$username', matrix_num='$matric', town='$town' and mail='$email'";
$query = mysql_query($sql, $masuk,$boleh) or die ("Gagal query".mysql_error());
$data = mysql_fetch_array($query);
}
答案 0 :(得分:2)
WHERE子句中的逗号运算符无效。
您似乎想要逻辑AND
或OR
运算符。查询形式如下:
SELECT t.*
FROM tblmyprofile t
WHERE t.student = 'fee'
AND t.username = 'fi'
AND t.matrix_num = 'fo'
AND t.town = 'fum'
AND t.mail = 'foo'
但这对于SQL查询来说是一个非常奇怪的构造;没有什么是无效的。但通常情况下,使用SELECT,我们通常打算根据一些谓词检索行,然后从行中获取值。
对于SQL查询的调试问题,将打算发送到数据库的SQL文本串起来,然后回显(或printf或vardump)字符串通常是一个好主意,例如
$sql = "SELECT col, expr, col FROM mytable WHERE col = 'abc'";
echo $sql;
然后,在调用中引用$sql
来解析并执行SQL语句。
我相信您遇到的部分问题可能是构造包含SQL文本的字符串。有些语言在字符串文字中包含变量和引号是不切实际的。
e.g。
$sql = " WHERE t.fee = '" . mysql_real_escape_string($foo) . "'"
. " AND t.fi = '" . mysql_real_escape_string($bar) . "'"
. ... ;
再次,在将SQL文本放在一起之后,将其回显用于调试,并验证它是否是您要发送到数据库的字符串。
另请注意,不推荐使用 mysql _ 界面。新开发应使用 mysqli _ 或 PDO 。另请注意,在SQL文本中包含任何不安全的变量都可能导致SQL注入漏洞。要么"逃避"您在SQL文本中包含的变量中的特殊字符,或者更好的是,使用带有绑定参数的预准备语句,以避免SQL注入。