目前,我正在制作一个php程序,它可以使用一个left join (只有两个表)接受一个SQL请求,目标是显示它们并编辑它们。问题是,如果我想编辑它们,我必须知道变量来自哪里(哪个表.)我想解析我想知道的请求。
SELECT users.login, users_info.linkedin, users.password, users.region, users.email, users.business, users.firstname, users.name, users.version, users.updatable, users.bodyshop_id, users.mac, users.register_date, users.lastvisite_date , users_info.address1, users_info.address2, users_info.address3, users_info.zip, users_info.cellphone, users_info.phone, users_info.direct_dial_phone, users_info.birthday, users_info.date_in, users_info.date_out, users_info.picture_private, users_info.picture_public, users_info.bodyshop, users_info.enterprise, users_info.department, users_info.job, users_info.facebook, users_info.twitter, users_info.instagram
FROM users
LEFT JOIN users_info ON users.id = users_info.id所以我只想创建一个函数,以“登录”作为参数,并返回我的“用户”,或者领英将返回我的users_info。你知道用php做这件事的正确方法吗?谢谢!
发布于 2017-10-06 09:48:43
最后,我这样做了,谢谢你的帮助!
public function getTableWithField($field) {
$tableName1 = "users";
$tableName2 = "users_info";
$pos = strpos($this->SQLCMD, $field);
$tryOne = substr($this->SQLCMD, $pos - strlen($tableName1) - 1, strlen($tableName1));
$tryTwo = substr($this->SQLCMD, $pos - strlen($tableName2) - 1, strlen($tableName2));
if ($tableName1 == $tryOne)
return $tableName1;
else if ($tableName2 == $tryTwo)
return $tableName2;
return "";
}发布于 2017-10-06 09:05:07
SELECT users.login, users.password, users.region, users.email, users.business, users.firstname, users.name, users.version, users.updatable, users.bodyshop_id, users.mac, users.register_date, users.lastvisite_date , users_info.address1, users_info.address2, users_info.address3, users_info.zip, users_info.cellphone, users_info.phone, users_info.direct_dial_phone, users_info.birthday, users_info.date_in, users_info.date_out, users_info.picture_private, users_info.picture_public, users_info.bodyshop, users_info.enterprise, users_info.department, users_info.job, users_info.facebook, users_info.twitter, users_info.linkedin, users_info.instagram
FROM users as users
LEFT JOIN users_info as users_info ON users.id = users_info.id
WHERE user.you_field_name = your_condition发布于 2017-10-06 09:13:18
在php中连接mysql的最现代语法是使用PDO。例如,文件index.php:
<?php
class ConnectPDO {
private $db_name = 'my_db_name';
private $db_login = 'root';
private $db_password = '12345678';
private $host = 'localhost';
private $opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
public $connection = null;
function __construct() {
$this->connection = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->db_name . ';charset=utf8', $this->db_login, $this->db_password, $this->opt);
}
}
$c=new ConnectPDO();
$params=array();
$params['login']='Frodo';
$prepared=$c->prepare("SELECT * FROM users WHERE login=:login");
$prepared->execute($params);
// fetching data array
$data=$prepared->fetchAll();
// view into browser
echo '<pre>';
print_r($data);
echo '</pre>';要防止注射和使用最佳实践编码众所周知的做法是使用准备和执行方法。您可以在windows上快速安装xampp并测试此代码。工作文件夹是/xampp/htdocs。
此参数需要由凭据更改。
private $db_name = 'my_db_name';
private $db_login = 'root';
private $db_password = '12345678';
private $host = 'localhost';https://stackoverflow.com/questions/46601984
复制相似问题