我正在尝试使用php连接到MYSQL,但是当我使用以下命令时:
$link=mysql_connect("localhost","root","password");
和echo $ link,它给了我资源ID#98。这是什么意思?我没有联系吗?
好吧,我猜这听起来好像是连接好了。现在,使用以下代码,我没有看到mysql数据库中的任何更改。为什么会这样?
<?php
$conn=new mysqli("localhost","root","password","database");
$sql="INSERT INTO chat_active (user, time)
VALUES('John', '1234')";
?>
答案 0 :(得分:2)
是什么让你认为你没有联系?
According to the docs,mysql_connect()
[r]成功时获得MySQL链接标识符,或者失败后返回FALSE。
由于它没有返回FALSE
,而是返回资源标识符,这意味着连接成功。
另请注意不推荐使用mysql扩展,因为MortimerCat指出PHP 5.5.0。相反,您应该查看MySQLi或PDO扩展程序。
答案 1 :(得分:1)
&#34;现在,使用以下代码,我没有看到mysql数据库中的任何更改。为什么会这样?&#34;
根据您正在使用mysqli_
进行连接的编辑,并且您说您没有在数据库中看到任何更改,原因是:
mysqli_
时需要这样做。重写,还有一些好东西:
<?php
$conn=new mysqli("localhost","root","password","database");
// Check if you've any errors when trying to access DB
if ($conn->connect_errno) {
printf("Connect failed: %s\n", $conn->connect_error);
exit();
}
$sql="INSERT INTO chat_active (user, time) VALUES ('John', '1234')";
$result = $conn->query($sql);
// Check if you've any errors when trying to enter data in DB
if (!$result)
{
throw new Exception($conn->error);
}
else{
echo "Success";
}
一旦你掌握了这一点,就可以了解mysqli
with prepared statements或PDO with prepared statements,他们会更加安全。
<强>参考文献:强>
<强>脚注:强>
您的专栏名称user, time
表明您正在尝试输入一个字符串,而这些字符串似乎是&#34; time&#34;并且user
列设置为varchar
。
请确保您没有设置{date}相关类型以外的time
列,否则MySQL可能会抱怨。
YYYY-mm-dd
作为示例。有关您可以使用的不同日期/时间功能,请访问https://dev.mysql.com/doc/refman/5.0/en/datetime.html。
MySQL参考:
答案 2 :(得分:0)
您使用mysqli或PDO。 这是PDO的连接示例:
<?php
$dbuser = 'user';
$dbpasswd = 'passwd';
$dbname = 'dbname';
try {
$gbd = new PDO("mysql:host=localhost;dbname=$dbname;charset=utf8", $dbuser, $dbpasswd);
$gbd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo $e->getMessage();
}
PDO CRUD示例:
//INSERT
try {
$sentence = $gbd->prepare("INSERT INTO table (param1, param2) VALUES (:param1, :param2)");
$sentence->bindParam(':param1', $param1);
$sentence->bindParam(':param2', $param2);
$sentence->execute();
}
catch (PDOException $e) {
echo 'Query failed: ' . $e->getMessage();
}
//SELECT
try {
$sentence = $gbd->prepare("SELECT param1,param2 FROM table WHERE param1 = :param1 AND param2 = :param2)");
$sentence->bindParam(':param1', $param1);
$sentence->bindParam(':param2', $param2);
$sentence->execute();
while ($row = $sentence->fetch(PDO::FETCH_ASSOC)){ //Also available FETCH_NUM,FETCH_BOTH AND OTHERS
$result['param1'] = $row['param1'];
$result['param2'] = $row['param2'];
}
}
catch (PDOException $e) {
echo 'Query failed: ' . $e->getMessage();
}
//UPDATE
try {
$sentence = $gbd->prepare("UPDATE table SET param1 = :param1, param2 = :param2)");
$sentence->bindParam(':param1', $param1);
$sentence->bindParam(':param2', $param2);
$sentence->execute();
}
catch (PDOException $e) {
echo 'Query failed: ' . $e->getMessage();
}
//DELETE
try {
$sentence = $gbd->prepare("DELETE table WHERE param1 = :param1 AND param2 = :param2)");
$sentence->bindParam(':param1', $param1);
$sentence->bindParam(':param2', $param2);
$sentence->execute();
}
catch (PDOException $e) {
echo 'Query failed: ' . $e->getMessage();
}
答案 3 :(得分:0)
你没有执行那个query.u只是声明那个查询。
执行 -
$ conn-&GT;查询($ QRY);
它会执行你的查询。