【问题标题】:PHP doesn't connect to MySQLPHP 没有连接到 MySQL
【发布时间】:2018-12-09 15:31:27
【问题描述】:

我想制作一个表单,当用户键入一些输入时,程序会将其放入表中的数据库中。我正在使用 PDO 连接到数据库,但是当我输入某些内容时,它什么也没做。你能帮助我吗?我在代码中做错了什么?我有一个单独的 PDO 代码文件,我将它包含在 php 文件中。 PDO 代码:

<?php
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=music', 'kat', 'msc');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>

我在 MySQL 中创建了数据库,并在里面创建了一个名为专辑的表。我希望用户输入艺术家姓名、歌曲和专辑编号,并自动将其保存在表格中。我的 PHP 代码:

<?php
require_once "pdo.php";  
$sql= "INSERT INTO album(name, song, number) VALUES ( :nm, :sn, :nb)";
echo("<pre>\n".$stmt."\n</pre>\n");
$stmt = $pdo->prepare ($sql);
$stmt->execute(array(
':nm' => $_POST['name'],
':sn' => $_POST['song'],
':nb' => $_POST['number']));
}
$stmt = $pdo->query("SELECT name, song, number FROM album");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

以及表单的代码:

<form method="post">
<p>Name:
<input type="text" name="name" size="60"/></p>
<p>Song:
<input type="text" name="song"/></p>
<p>Number:
<input type="text" name="number"/></p>
<input type="submit" value="Add">   
</form>

当按下“添加”按钮时,我将对非空、整数等数据进行一些输入验证,但我还没有完成,因为我什至无法让简单的部分工作。我正在使用 xampp 和 MySQL 分开工作,我的 php 文件什么也没做。 我错过了什么?

【问题讨论】:

  • 你的表单没有“动作”,所以它永远不会被执行。
  • 投票为印刷错误。
  • 我应该采取什么行动将其连接到数据库?
  • &lt;form method="post" action="your_php_file.php"&gt;

标签: php mysql pdo database-connection


【解决方案1】:

已排序请按照以下代码:

<?php
error_reporting(0);
if( isset($_POST['postdata'])) { 

    $servername = "localhost";
    $username = "kat";
    $password = "msc";
    try {
    $conn = new PDO("mysql:host=$servername;dbname=music", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    $sql= "INSERT INTO album(name, song, number) VALUES ( :nm, :sn, :nb)";
    echo("<pre>\n".$stmt."\n</pre>\n");
    $stmt = $conn->prepare ($sql);
    $stmt->execute(array(
    ':nm' => $_POST['name'],
    ':sn' => $_POST['song'],
    ':nb' => $_POST['number']));
    
    $stmt = $conn->query("SELECT name, song, number FROM album");
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    print_r($rows);


    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }
}
?>



<form method="post">
<p>Name:
<input type="text" name="name" size="60"/></p>
<p>Song:
<input type="text" name="song"/></p>
<p>Number:
<input type="text" name="number"/></p>
<input type="submit" value="Add" name="postdata">   
</form>

我做了一些更改以使其正常工作

【讨论】:

  • 谢谢。我可以在单独的文件中连接到数据库,这样我就可以将它用于其他文件,而不必在每个文件中再次键入它?
  • 让我发给你
  • 所以当我创建单独的文件时,我只是从我的其他文件中删除所有这些?此外,我希望将输入打印为表单下的列表,而不是在开头作为数组打印。我是否将 echo 语句放在带有 $name 等的表单下?
  • 另外,我希望将输入打印为表单下的列表,而不是在开头作为数组打印。为此,首先您需要用 foreach 分隔数组,是的,您可以在表单元素的最后一个位置执行此操作。将这些行放在最后 $stmt = $conn->query("SELECT name, song, number FROM album"); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($rows); foreach($rows as $row) { echo $row[0]->name; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
相关资源
最近更新 更多