Php 在数据库中插入所选数据
基本上,我想在account\u info表的patient\u info表中插入一个外键acc\u id 我已设法从数据库中检索数据。现在我想将它作为外键插入另一个表中。我有以下代码:Php 在数据库中插入所选数据,php,mysql,angular,typescript,ionic-framework,Php,Mysql,Angular,Typescript,Ionic Framework,基本上,我想在account\u info表的patient\u info表中插入一个外键acc\u id 我已设法从数据库中检索数据。现在我想将它作为外键插入另一个表中。我有以下代码: try { $stmt = $pdo->query('SELECT acc_id FROM account_info ORDER BY acc_id DESC LIMIT 1'); while($row = $stmt->fetch(PDO::FETCH_OBJ))
try {
$stmt = $pdo->query('SELECT acc_id FROM account_info ORDER BY acc_id DESC LIMIT 1');
while($row = $stmt->fetch(PDO::FETCH_OBJ))
{
// Assign each row of data to associative array
$data[] = $row;
}
// Return data as JSON
echo json_encode($data);
}
如何在表中插入值?
这是完整的代码:
<?php
header('Access-Control-Allow-Origin: *');
// Define database connection parameters
$hn = 'localhost';
$un = 'root';
$pwd = '';
$db = 'ringabell';
$cs = 'utf8';
// Set up the PDO parameters
$dsn = "mysql:host=" . $hn . ";port=3306;dbname=" . $db . ";charset=" . $cs;
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_EMULATE_PREPARES => false,
);
// Create a PDO instance (connect to the database)
$pdo = new PDO($dsn, $un, $pwd, $opt);
// Retrieve specific parameter from supplied URL
$key = strip_tags($_REQUEST['key']);
$data = array();
switch($key)
{
// Add a new record to the technologies table
case "create":
// Sanitise URL supplied value
$acc_id = filter_var($_REQUEST['acc_id'],
FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_LOW);
$p_fname = filter_var($_REQUEST['p_fname'],
FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_LOW);
$p_lname = filter_var($_REQUEST['p_lname'],
FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_LOW);
$p_gender = filter_var($_REQUEST['p_gender'],
FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_LOW);
$p_condition = filter_var($_REQUEST['p_condition'],
FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_LOW);
$p_emergencycontact = filter_var($_REQUEST['p_emergencycontact'],
FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_LOW);
$p_birthdate = filter_var($_REQUEST['p_birthdate'],
FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_LOW);
try{
$stmt = $pdo->query('SELECT acc_id FROM account_info ORDER BY acc_id DESC LIMIT 1');
while($row = $stmt->fetch(PDO::FETCH_OBJ))
{
// Assign each row of data to associative array
$data[] = $row;
}
// Return data as JSON
echo json_encode($data);
$sql= "INSERT INTO patient_info(acc_id, p_fname, p_lname, p_gender, p_condition, p_birthdate, p_emergencycontact)
VALUES(:acc_id, :p_fname, :p_lname, :p_gender, :p_condition, :p_birthdate, :p_emergencycontact)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':p_fname', $p_fname, PDO::PARAM_STR);
$stmt->bindParam(':p_lname', $p_lname, PDO::PARAM_STR);
$stmt->bindParam(':p_gender', $p_gender, PDO::PARAM_STR);
$stmt->bindParam(':p_condition', $p_condition, PDO::PARAM_STR);
$stmt->bindParam(':p_birthdate', $p_birthdate, PDO::PARAM_STR);
$stmt->bindParam(':p_emergencycontact', $p_emergencycontact, PDO::PARAM_STR);
$stmt->bindParam(':acc_id', $acc_id, PDO::PARAM_STR);
$stmt->execute();
echo json_encode(array('message' => 'Congratulations the record was added to the database'));
}
// Catch any errors in running the prepared statement
catch(PDOException $e)
{
echo $e->getMessage();
}
break;
}
?>
解决方案:我敢肯定,您可以通过删除while循环来改进代码,改为如下方式:
$data = $stmt->fetchAll(PDO::FETCH_OBJ);
您确定得到了预期的JSON(在打印之前尝试过任何$data的var_转储吗?这不是JavaScript的一个简单问题吗?您是否尝试过使用JavaScript部分中应该获得的数据 这可能是在XMLHttpRequest中设置头的问题,JavaScript并不关心,并且不管怎样都会给您JSON 现在有一些明显的问题:
- 我看不到您连接到数据库的位置。你有联系吗
- 您试图插入一个ID,MySQL允许您插入自动增值吗?(在这种情况下,acc_id不是Int吗?)
- 您正在通过$\u请求发送值,您确定通过$\u请求获得了任何信息吗(顺便说一句,检查$\u GET和$\u POST)
我希望这会有所帮助,你在做这件事时面临的具体问题是什么?我可以返回所选的值,但是当我添加其余的代码时,我在JSON.parse()的位置0处得到
SyntaxError:Unexpected token<在JSON中,你正在发布带有javascript错误的php代码。将相关代码张贴到问题上。不确定,但尝试使用'PDO::FETCH_ASSOC',而不是在您的FETCH中使用PDO::FETCH_OBJ
。@NigelRen我仍然会遇到相同的错误!你好谢谢你帮助我!我按照你的建议改进了我的代码,但是我无法测试它,仍然会出错。现在,它已连接。是的,它是自动递增的,另一个表中的值工作得很好。有没有一种方法可以检索和添加一个外键,而不是我正在使用的外键?这个页面中有什么?如果id是一个自动增量值,请将其从插入操作中删除。也许我的问题不太清楚,帐户信息表中的ac_id是自动增量。我想将它作为外键插入到patient_info表中,作为两个表之间的链接哦,对不起,我的错误。。。您切换的$key是什么?你确定里面有人吗?如果插入了行,您是否查看了数据库?在$u请求中有什么?在$key中我有创建更新或删除的选项。帐户信息表填写正确。请求中没有任何内容,但如果没有它,代码将无法工作
load()
{
this.http.get('http://localhost:10080/ionic/patients.php')
.map(res => res.json())
.subscribe(data =>
{
this.items = data;
});
}
$data = $stmt->fetchAll(PDO::FETCH_OBJ);