0

我试图将某些值输入到数据库表中,尽管它正在通过,但并非所有值都被填充。

我要跳过一些部分,因为这并不是说我没有连接等,问题是虽然我正在通过数据库并与数据库进行通信,但在信息上传时,只有某些字段被填充。

例如,

我的“用户名/密码”字段在数据库中具有相同的值,所以我不确定为什么一个字段被填充而另一个不是......

但这里有一些代码..有很多所以我要复制/粘贴重要部分

the html for example is

<input type="text" name="uname" id="uname" value="Enter Desired Username"/><br/>
<input type="text" name="upass" id="upass" value="Enter Desired Password"/><br/>

etc...you know same old html

连接工作的php等..

变量

$c2d = "the db connection here";
$userName = mysql_real_escape_string($_POST['uname']);
$userPass = mysql_real_escape_string($_POST['upass']);

//在这里我设置了我所有的变量,但这是有问题的。

$addDetails2DbQueryS = "INSERT INTO accounts (appUname, appUpass)VALUES('$userName','$userPass')";

$addDetails2DbQueryS = "INSERT INTO accounts (appUname, appUpass) VALUES('$userName','$userPass')";

//在此处执行一些检查,例如正在创建的帐户是否已经存在等。这也可以工作。

然后当一切都好时,将帐户添加到我使用它的数据库中

$addDetails2DbQuerySDoIt = mysqli_query($c2d, $addDetails2DbQueryS) or die("error [003] could not add acc to db" . mysqli_error);

发生的事情是,用户名已记录,但密码字段为空

任何想法我做错了什么?在此先感谢和任何帮助我很高兴和谦虚地感谢。谢谢

4

1 回答 1

2

您使用了错误的转义功能...您正在使用mysql_real_escape_string扩展ext/mysql名,但实际上您正在使用MySQLi扩展名进行插入,因此您应该使用其版本的功能mysqli_real_escape_string

使用一个数据库驱动程序或另一个,而不是两者:-)

我实际上希望您获得这两个值,因为如果您没有与调用false建立数据库连接,则应该返回 false 并生成警告:mysql_connectmysql_real_escape_string

MySQL 连接。如果未指定链接标识符,则假定由 mysql_connect() 打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像 mysql_connect() 没有参数被调用一样。如果未找到或建立连接,则会生成 E_WARNING 级别错误。

如果您已建立mysql_connect()连接,那么我预计您mysqli_query()会失败,因为您从未与mysqli_connect().

我认为,一旦您选择了 3 个 DB 驱动程序之一并且只使用其中一个的类/功能,您的大多数问题都会消失:

  1. PDO (我最喜欢的,优雅的,非常易于使用,如果需要,更容易将代码移植到 diff.db)
  2. MySQLi(提供最佳范围的 MySQL 特定功能,但使用起来更笨重)
  3. ext/mysql(尽可能避免像瘟疫一样)
于 2012-06-15T17:26:50.017 回答